Data Feed (XML/JSON/Remarketing) – Bannernow Tutorials https://bannernow.com/tutorials Bannernow Tutorials Wed, 19 Feb 2025 23:44:01 +0000 en-US hourly 1 https://wordpress.org/?v=6.7.2 https://bannernow.com/tutorials/wp-content/uploads/favicon-bn-32x32.png Data Feed (XML/JSON/Remarketing) – Bannernow Tutorials https://bannernow.com/tutorials 32 32 Feed Data table https://bannernow.com/tutorials/html5-banner-ads-data-table-feed/ Wed, 14 Aug 2024 11:08:27 +0000 http://help.bannernow.com.www629.your-server.de/?p=3268 Data tables are fundamental when it comes to managing feeds.

They provide a structured format, that allows you to organize and store various attributes associated with creative ads, such as image URLs, image files, product IDs, product descriptions, etc.

Data tables can be also used as an alternative to Google Spreadsheets for managing the dynamic data for the Feeds.

To create a new Data Table go to Data > Data Tables > click New Data Table button.

To rename your Data table click on the top menu and select Rename.

To import a CSV file, just click on Import CSV button in the top menu.

To add a new column, click on Add button and select from the dropdown menu the type of column you want to add.

To add a new row, click on Add button at the bottom left of your table.

To select a row, hover over it and click on it.

To view all the actions (like Rename, Delete, …) for a specific column, click on the drop-down arrow.

Let’s insert a new Text column on the left.

For the Text you have additional tools to fully customize it (including the Font Size).

For the image column, upload your images to your feed by clicking the Import File button or simply Drag the images directly from your PC to the Data table.

A thumbnail will be displayed for each uploaded image.

Now, let’s add a Color column.

To select a color, simply double-click inside the column, and the color picker will automatically appear.

A color thumbnail will be displayed for each added color.

Right-click to Copy/Paste/Delete color. You can also remove color by pressing Delete on your keyboard.

If you want to select more rows, select a row from the top and hold down the Shift key and select the bottom row. That selects all rows in between.

Use keyboard shortcuts to enhance productivity.

For Windows:

Undo last command – Ctrl + Z;

Redo last command – Ctrl + Shift + Z;

Cut – Ctrl + X;

Copy – Ctrl + C;

Paste – Ctrl + V.

For MacOs:

Undo last command – Cmd + Z;

Redo last command – Cmd + Shift + Z;

Cut – Cmd + X;

Copy – Cmd + C;

Paste – Cmd + V.

]]>
Data Feed (XML/JSON/Remarketing) - Bannernow Tutorials nonadult
Private Google Spreadsheets https://bannernow.com/tutorials/private-google-spreadsheets/ Tue, 21 May 2024 11:35:14 +0000 http://help.bannernow.com.www629.your-server.de/?p=3076 Our platform transforms Google Sheets into a dynamic feed source for ads, providing a seamless and efficient way to manage and display real-time content. Your Google Sheets can remain private and protected, accessible only through authorised connections. This feature is available only for Organization and Enterprise.

In this guide, we’ll walk you through the steps to protect your Google Sheets, ensuring your data remains private and secure.

Let’s begin by setting up access permissions for your Google Sheets. In the top-right corner click Share button.

Enter the email address provided by BannnerNow:

private-spreadsheets@bannernow-gcloud.iam.gserviceaccount.com

Click the Share button to share the spreadsheet. Viewer permission is sufficient. The platform will now have access to your Google Sheet based on the permissions you have set.

Let’s return to BannerNow and set up a new feed. Navigate to the Data menu, open the Feeds tab, and click on New feed.

Next, from the Data Source options select Google Spreadsheet.

In the modal:

1. input the name of your feed;

2. copy the link of your google spreadsheet and insert it in the Spreadsheet ID field;

3. check the Private Spreadsheet option.

And there you have it! Now your private Google Spreadsheet is serving as a dynamic feed source and you can easily manage and update the content displayed on your ads in real-time. Happy advertising!

]]>
Data Feed (XML/JSON/Remarketing) - Bannernow Tutorials nonadult
Feed Targeting https://bannernow.com/tutorials/feed-targeting/ Thu, 03 Sep 2020 15:44:17 +0000 http://help.bannernow.com.www629.your-server.de/?p=1675 The Feed Targeting feature allows you to display different products from your feed to different users based on the information that user’s browser provides when the ad is loaded ( IP address which is translated to the ISP, Country, State, City and Zip geo position, browser user-agent which is converted to user Browser Language and Device type).

  1. Let’s create a Real Estate spreadsheet document and use it as a data source for this tutorial. Add a City and Zip code columns to your feed so we can match these values to user’s data later.

google spreadsheet data source feed file

2. Publish your Google document to the web ( File->Publish to the web… ).

Google spreadsheet publish to web menu bannernow

Publish to web settings bannernow

3. Copy the Google Sheet URL from the browser tab (don’t use the one from the “publish to the web” modal).

Google sheets link copy

4. Add an ID from your google sheet URL to https://gconv.bannernow.com/?id=

url create new feed bannernow

Note: If you want to use a specific sheet from your document then add the &sheet=2 (number of the sheet)

https://gconv.bannernow.com/?id=1Y_yMUxJHS00vUvCj1Cvd-ZqP8SMbzSdx44JxKh69OgE&sheet=2

5. This URL can now be used to create a feed on BannerNow. Don’t forget to select “Enable Targeting” checkbox.

Library create new feed dashboard bannernow

Bannernow modal create new feed

6. Select the columns that you want to use in your ads and check “Unify results” checkbox (required for google spreadsheet). You will see the “Products” preview in the panel on the right side.

BannerNow columns feed

7. Now let’s add the targeting rules to our feed. Switch to Targeting tab and click “Add New Rule” button.

BannerNow new target rule

8. Set rule type to “Include” – means include ONLY results that match targeting rule (all other results/products will be excluded from the feed when ad is loaded).

Then select “City” in the dropdown on the left side, then cast as “String” equals and the second dropdown – attribute(column) from our feed – “city”.

This means that if user loads the Ad on some website and he is from the New York city – the Ad will try to find the product that has the attribute value that matches user’s data (product with city = New York) and all other products will be excluded from the feed.

As a result user will see the Ad with New York city real estate product that matched his geo targeting.

BannerNow add city and zip code targeting rule

If none of the rules matches user’s data then feed will be not filtered and user will see the first product from the original feed.

]]>
Create and use Dynamic Feeds https://bannernow.com/tutorials/feeds/ Tue, 06 Mar 2018 19:02:46 +0000 http://help.bannernow.com.www629.your-server.de/?p=285 Feeds and click on the Add a New Feed button. From Select Data Source dialog select JSON. Fill […]]]> How to add a feed (dynamic data) to the banners.

Before you can create a feeded banner, you need to create a new feed, which will be used in your bannersets.

Learn how to do this:

Go to the Data > Feeds and click on the Add a New Feed button.

From Select Data Source dialog select JSON.

Fill in all the required input fields:

  1. In the “FEED NAME” input the feed’s title.
  2. In the “FEED URL” input the feed’s URL (XML or JSON). You”l also be able to use a Google Spreadsheet as a feed source.
  3. In the “MAX ROWS” input the limit number of max results/rows.
  4. Select the “UPDATE INTERVAL” – an interval that represents how often new data is fetched.
  5. Click the Proceed to fields selection, to go to the next step.

 After your feed was parsed, select the data that can be accessed from inside the banner:

  • Check the required fields in the left tree panel.
  • The fields that you have selected will appear in the central panel (Selected Fields).
  • You can use the jsonPath formula (read the documentation) if you need to select some specific data or to convert it into a different format (you can also contact us, we will gladly assist you with this). In this tutorial, we have used the UCASE({$[*].name}) formula to convert the name fields to uppercase strings. For the price_usd field we are using the NUMBER({$[*].price_usd}, ‘$0,0.00’) formula to display the price in the right format.
  • You can also create a custom field manually by clicking the +Add Custom Field button.
  • For the “img” custom field we will create a formula to help us to create a URL path to the image from the feed: ‘https://bannernow.com/demo/’+{$[*].id}+’.svg‘.
  • Within the right panel, you’ll view the results accessible in your banners.

Use Filters:

Click the “Add New Filter” button.

You can manipulate the feed results using the following filter types: Include, Exclude, Replace, Sort, Prioritize, Remove Duplicates, URL Fallback

Here is an example:

  1. Input filter title.
  2. Select the Sort filter.
  3. Select the filtering to sort by price.
  4. Field type (string, number, date).
  5. Operator (descending price).

Click the “Update/Create Feed” to save it.

Create a new bannerset.

When creating a bannerset, input the title and select the feed source from the dropdown menu. After that, click the create button.

Create a new banner.

You can use a different feed for the translated banners within the same bannerset:

  • Click the Settings button in the translation modal
  • Select a different feed from the dropdown
  • Click the Update button

After adding the feed to your bannerset you can create a new banner (or edit an existing one). To add a feeded source to the item inside the banner, do the following:

  • Select the each item
  • Click on the green Feed button

Select the field that you want to display. The fixed row slider can be used in case you need to display the data from a specific row only. Click Save  to apply the feed to the item.

It’s also possible to connect the URL from the feed to the banner hyperlinks. To do this, go to canvas settings and set the feeded hyperlink to the whole banner or select an item and enable Hyperlink for it.

Select the field that contains the URL data format and click Save to apply the changes.

Save your banner and click Preview. You will notice that on each loop, the banner is taking the new data from the next row within the feed.

Now, you’re able to publish the banner to the ad network. When the feed data is updated, your banner will always display fresh data.

Showcase Example https://bannernow.com/html5-banner-examples

]]>
Google Spreadsheet as a Feed Source https://bannernow.com/tutorials/using-google-sheets-as-feed-source/ Tue, 06 Mar 2018 18:25:01 +0000 http://help.bannernow.com.www629.your-server.de/?p=516 BannerNow provides a way to use Google Sheets as a feed source for your banners.

Here’s how you can use it:

1. Open up Google Sheets

Tip: If your spreadsheet is stored as XLSX – convert it to Google Sheets first !

2. Make sure the first row contains a title for each column.

3. Next click the Share button in the top right menu.

4. Click “Change to anyone with the link“.

5. Next choose Anyone with the link option and press “Done”.

6. Next copy the document link.

7. Go back to BannerNow, Library -> Feeds -> New Feed.

8. Choose Google Spreadsheet.

9. Paste your google spreadsheet link, choose the page number and the desired update interval and click proceed.

Now you can select the data from your spreadsheet that you want to use in your banners.

Read more about creating feeded banners here.

]]>
Feed Functions / JsonPath https://bannernow.com/tutorials/feed-functions/ https://bannernow.com/tutorials/feed-functions/#respond Sat, 10 Feb 2018 19:25:00 +0000 http://help.bannernow.com.www629.your-server.de/?p=14 Bannernow supports both XML and JSON dynamic feeds

XML feeds are automatically converted to JSON format within Bannernow. You can use the default JSON path to extract data from your feed easily.

JSONPath is a special language for extracting data from XML or JSON feeds.

JSONPath uses special notation to represent nodes and their connections to adjacent nodes in a JsonPath path. There are two styles of notation, namely dot and bracket.

Both of the following paths refer to the same node from the above JSON document, which is the third element within the books field of store node under the root node.

With dot notation

$.store.books[2]

With bracket notation:

$[‘store‘][‘books‘][2]

Operators:

We have several helpful operators in JsonPath:

Root node ($): This symbol denotes the root member of a JSON structure no matter it is an object or array. Its usage examples were included in the previous sub-section.

Current node (@): Represents the node that is being processed, mostly used as part of input expressions for predicates. Suppose we are dealing with book array in the above JSON document, the expression book[?(@.price == 49.99)] refers to the first book in that array.

Wildcard (*): Expresses all elements within the specified scope. For instance, book[*] indicates all nodes inside a book array.

Let’s practice JSONPath expressions by some more examples. We start with a simple JSON structure:

{ "store": {
    "date": "Feb 9 2017",
    "book": [
      { "category": "reference",
        "author": "Nigel Rees",
        "title": "Sayings of the Century",
        "price": 8
      },
      { "category": "fiction",
        "author": "Evelyn Waugh",
        "title": "Sword of Honor",
        "price": 12
      },
      { "category": "fiction",
        "author": "Herman Melville",
        "title": "Moby Dick",
        "isbn": "0-553-21311-3",
        "price": 8
      },
      { "category": "fiction",
        "author": "J. R. R. Tolkien",
        "title": "The Lord of the Rings",
        "isbn": "0-395-19395-8",
        "price": 12
      }
    ],
    "bicycle": {
      "title": " Cool Bicycle ",
      "color": "Red",
      "price": "19.95",
      "oprice": 19.5,
      "rating": -10
    }
  }
}

 

JSONPathResult
$.store.book[*].authorthe authors of all books in the store
$..authorall authors
$.store.*all things in store, which are some books and a red bicycle.
$.store..pricethe price of everything in the store.
$..book[2]the third book
$..book[(@.length-1)]
$..book[-1:]
the last book in order.
$..book[0,1]
$..book[:2]
the first two books
$..book[?(@.isbn)]filter all books with isbn number
$..book[?(@.price<10)]filter all books cheapier than 10
$..*All members of JSON structure.

Functions:

Here’s a list of functions that can be applied to the feed in order to modify the output value. All functions can be combined (for example function 1 result + function 2 result).

Numeric Functions:

*Always use “{ }” for retrieving the value from feed

Function Before After
ABS({$.store.bicycle.rating}) -1010
FLOOR({$.store.bicycle.price}) 19.519
CEIL({$.store.bicycle.oprice}) 19.520
ROUND({$.store.bicycle.price}) 19.9520
ADD({$.store.bicycle.price}, 1, 3, 6) 19.9529.95
SUB({$.store.bicycle.price}, 1, 3, 6) 19.959.95
MUL({$.store.bicycle.price}, 2) 19.9539.9
DIV({$.store.bicycle.price}, 5) 19.953.99
MOD({$.store.bicycle.price}, 3) 19.951.95
NUMBER({$.store.bicycle.price}) "19.95"19.95
NUMBER(974) 974974
NUMBER(0.12345) 0.123450.12345
NUMBER('10,000.12') '10,000.12'10000.12
NUMBER('23rd') '23rd'23
NUMBER('$10,000.00') '$10,000.00'10000
NUMBER('100B') '100B'100
NUMBER('3.467TB') '3.467TB'3467000000000
NUMBER('-76%') '-76%'-0.76
NUMBER('2:23:57') '2:23:57'NaN

String Functions:

Function Before After
LCASE({$.store.bicycle.color}) Redred
UCASE({$.store.bicycle.color}) RedRED
FCASE({$.store.bicycle.title}) Cool BicycleCool bicycle
SCASE('cool bicycle. cool bicycle.') cool bicycle. cool bicycle.Cool bicycle. Cool bicycle.
WCASE({$.store.bicycle.title}) Cool BicycleCool Bicycle
CCASE({$.store.bicycle.title}) Cool Bicyclecool Bicycle
REPLACE({$.store.bicycle.title}, 'Cool', 'Best') Cool BicycleBest Bicycle
TRIM({$.store.bicycle.title}) " Cool Bicycle ""Cool Bicycle"
SPLIT({$.store.bicycle.title}, ' ') " Cool Bicycle "[ "", "Cool", "Bicycle", "" ]

Array Functions:

Use “{{ }}” instead of “{ }” to retrieve the whole Array/List

*For XML feeds only: use ARRAY() function to convert XML lists with one item to array (by default one item will be converted to a property)

Function Before After
WHERE({{$.store.book[*]}}, '_price', '=', '12')[0]._title 8,12,8,12Sword of Honor
AVG({{$.store.book[*]}}, '_price') 8,12,8,1210
MIN({{$.store.book[*]}}, '_price')[0] 8,12,8,128
MAX({{$.store.book[*]}}, '_price')[0] 8,12,8,1212
SUM({{$.store.book[*]}}, '_price') 8,12,8,1240
COUNT({{$.store.book[*]}}, '_price') 8,12,8,124
JOIN({{$.store.book[*]}}, '_price', '--') 8,12,8,128--12--8--12--10
DISTINCT({{$.store.book[*]}}, '_price') 8,12,8,128,12

Currency Conversion Functions:

Currency rates are pulled in realtime from http://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml

Function Before After
CURRENCY({$.store.bicycle.price},'USD','EUR') 19.9518.57

Number Formatting Functions:

FunctionBeforeAfter
NUMBER(10000, '0,0.0000')1000010,000.0000
NUMBER(10000.23, '0,0')10000.2310,000
NUMBER(10000.23, '+0,0')10000.23+10,000
NUMBER(-10000, '0,0.0')-10000-10,000.0
NUMBER(10000.1234, '0.000')10000.123410000.123
NUMBER(100.1234, '00000')100.123400100
NUMBER(1000.1234, '000000,0')1000.1234001,000
NUMBER(10, '000.00')10010.00
NUMBER(10000.1234, '0[.]00000')10000.123410000.12340
NUMBER(-10000, '(0,0.0000)')-10000(10,000.0000)
NUMBER(-0.23, '.00')-0.23-.23
NUMBER(-0.23, '(.00)')-0.23(.23)
NUMBER(0.23, '0.00000')0.230.23000
NUMBER(0.23, '0.0[0000]')0.230.23
NUMBER(1230974, '0.0a')12309741.2m
NUMBER(1460, '0 a')14601 k
NUMBER(-104000, '0a')-104000-104k
NUMBER(1, '0o')11st
NUMBER(100, '0o')100100th
FRACTION(0.25)0.251/4

Currency Formatting Functions:

FunctionBeforeAfter
NUMBER(1000.234, '$0,0.00')1000.234$1,000.23
NUMBER(1000.2, '0,0[.]00 $')1000.21,000.20 $
NUMBER(1001, '$ 0,0[.]00')1001$ 1,001
NUMBER(-1000.234, '($0,0)')-1000.234($1,000)
NUMBER(-1000.234, '$0.00')-1000.234-$1000.23
NUMBER(1230974, '($ 0.00 a)')1230974$ 1.23 m

Percentage Formatting Functions:

FunctionBeforeAfter
NUMBER(1, '0%')1100%
NUMBER(0.974878234, '0.000%')0.97487823497.488%
NUMBER(-0.43, '0 %')-0.43-43 %
NUMBER(0.43, '(0.000 %)')0.4343.000 %

Time Formatting Functions:

FunctionBeforeAfter
NUMBER(25, '00:00:00')250:00:25
NUMBER(238, '00:00:00')2380:03:58
NUMBER(63846, '00:00:00')6384617:44:06

Date Formatting Functions:

FunctionBeforeAfter
DATE({$.store.date}, 'UTC:h:MM:ss TT Z')Feb 9 201711:00:00 PM UTC
DATE({$.store.date}, 'fullDate')Feb 9 2017Thursday, February 9, 2017
DATE({$.store.date}, 'fullDate', 'ru')Feb 9 2017четверг, февраля 9, 2017

Named Date Formats

*Need to be passed as a second argument to DATE(…, format name):

NameMaskExample
defaultddd mmm dd yyyy HH:MM:ssSat Jun 09 2007 17:46:21
shortDatem/d/yy6/9/07
mediumDatemmm d, yyyyJun 9, 2007
longDatemmmm d, yyyyJune 9, 2007
fullDatedddd, mmmm d, yyyySaturday, June 9, 2007
shortTimeh:MM TT5:46 PM
mediumTimeh:MM:ss TT5:46:21 PM
longTimeh:MM:ss TT Z5:46:21 PM EST
isoDateyyyy-mm-dd2007-06-09
isoTimeHH:MM:ss17:46:21
isoDateTimeyyyy-mm-dd'T'HH:MM:ss2007-06-09T17:46:21
isoUtcDateTimeUTC:yyyy-mm-dd'T'HH:MM:ss'Z'2007-06-09T22:46:21Z

Date Format Mask

*Can be combined to any format (for example HH:MM:ss)

MaskDescription
dDay of the month as digits; no leading zero for single-digit days.
ddDay of the month as digits; leading zero for single-digit days.
dddDay of the week as a three-letter abbreviation.
ddddDay of the week as its full name.
mMonth as digits; no leading zero for single-digit months.
mmMonth as digits; leading zero for single-digit months.
mmmMonth as a three-letter abbreviation.
mmmmMonth as its full name.
yyYear as last two digits; leading zero for years less than 10.
yyyyYear represented by four digits.
hHours; no leading zero for single-digit hours (12-hour clock).
hhHours; leading zero for single-digit hours (12-hour clock).
HHours; no leading zero for single-digit hours (24-hour clock).
HHHours; leading zero for single-digit hours (24-hour clock).
MMinutes; no leading zero for single-digit minutes.
MMMinutes; leading zero for single-digit minutes.
NISO 8601 numeric representation of the day of the week.
oGMT/UTC timezone offset, e.g. -0500 or +0230.
sSeconds; no leading zero for single-digit seconds.
ssSeconds; leading zero for single-digit seconds.
SThe date's ordinal suffix (st, nd, rd, or th). Works well with d.
lMilliseconds; gives 3 digits.
LMilliseconds; gives 2 digits.
tLowercase, single-character time marker string: a or p.
ttLowercase, two-character time marker string: am or pm.
TUppercase, single-character time marker string: A or P.
TTUppercase, two-character time marker string: AM or PM.
WISO 8601 week number of the year, e.g. 42
ZUS timezone abbreviation, e.g. EST or MDT. With non-US timezones or in the
'...', "..."Literal character sequence. Surrounding quotes are removed.
UTC:Must be the first four characters of the mask.
Converts the date from local time to UTC/GMT/Zulu
time before applying the mask. The "UTC:"
prefix is removed.

Image Fallback

replace broken URLs with a fallback URL

FUNCTIONBEFOREAFTER
URL_FALLBACK({$.store.image_url}, 'https://example.com/fallback_image.png')https://example.com /broken_image.pnghttps://example.com /fallback_image.png

]]>
https://bannernow.com/tutorials/feed-functions/feed/ 0