A shop adds its product feed once. Every product becomes a native ad with its photo, name and price, and the ads follow the feed: new products are added, changed ones updated, sold-out ones paused.
This is a live zone on a demo account. Fjellpeak and its products are made up; the photos are CC0 stock.
On an outdoor site, eight product cards. Each one is a native ad the ad server created from one line of Fjellpeak's product feed — photo, name, price and the product's own page — and each one competes, is counted and is billed like any other ad. Nobody made these ads by hand: the advertiser added the feed URL once.
<!-- once per page, in <head> -->
<script src="https://g2.gsrv.dev/ctrl/19460.js"></script>
<!-- where it goes -->
<style>
#id_12512725 .gnl, #id_12512725 .gnl *{box-sizing:border-box}
#id_12512725 .gnl{font:14px/1.4 -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Arial,sans-serif;color:#1d1b33}
#id_12512725 .gnl a{text-decoration:none;color:inherit}
#id_12512725 .gnl img{display:block;max-width:100%;border:0}
#id_12512725 .gnl-title{display:block;font-weight:700;font-size:15px;line-height:1.3}
#id_12512725 .gnl-desc{display:block;color:#5d5b73;font-size:13px;line-height:1.45}
#id_12512725 .gnl-url{color:#8a88a0;font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}
#id_12512725 .gnl-ad{flex:none;font-size:11px;color:#5d5b73;border:1px solid #e3e2ec;border-radius:4px;padding:1px 6px}
#id_12512725 .gnl-cards .gnl-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:16px;margin:0 0 16px}
#id_12512725 .gnl-card{display:flex;flex-direction:column;height:100%;background:#fff;border:1px solid #e6e5ee;border-radius:12px;overflow:hidden;box-shadow:0 6px 18px -12px rgba(29,27,51,.25)}
#id_12512725 .gnl-card img{width:100%;height:auto;aspect-ratio:3/2;object-fit:cover}
#id_12512725 .gnl-txt{display:flex;flex-direction:column;flex:1;gap:6px;padding:12px 14px 14px}
#id_12512725 .gnl-foot{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:auto;padding-top:4px}
</style>
<div id="id_12512725"></div>
<script>
goCtrl.add({"plugin":"native","sid":12512725,"display":"id_12512725",
"tpl_body":'<div class="gnl gnl-cards">{body}</div>',
"tpl_row":'<div class="gnl-row">{items}</div>',
"tpl_item":'<a class="{href_itemid} gnl-card" href="#">{image}<span class="gnl-txt"><span class="gnl-title">{title}</span><span class="gnl-desc">{description}</span><span class="gnl-foot"><span class="gnl-url">{displayurl}</span><span class="gnl-ad">Sponsored</span></span></span></a>'
});
</script>The same 12 products as a Google Merchant feed: feed.xml. One of them is sold out: the feed says out_of_stock, so it gets no ad (an ad that was already running is paused), and it comes back on its own when the feed says in_stock again. A changed price or photo updates the ad on the next sync, a product that leaves the feed pauses its ad.
| Product | Price | Ad | |
|---|---|---|---|
![]() | Ridgeline 2 backpacking tent | ad live | |
![]() | Summit 38 L hiking pack | 139.00 EUR | ad live |
![]() | Trailhead waterproof hiking boots | 179.00 EUR | ad live |
![]() | Stormline 3-layer rain jacket | ad live | |
![]() | Arctic down sleeping bag, -5 °C | 259.00 EUR | ad live |
![]() | Carbon trekking poles (pair) | 99.00 EUR | ad live |
![]() | Glowline camp lantern | 49.00 EUR | ad live |
![]() | Ember camp cook pot | 45.00 EUR | ad live |
![]() | Glacier insulated bottle 750 ml | 34.00 EUR | ad live |
![]() | Enamel camp mug set (2) | 24.00 EUR | ad live |
![]() | Merino rib beanie | 29.00 EUR | ad live |
![]() | Treeline camping hammock | 59.00 EUR | sold out · no ad |
Create a native campaign with the budget and targeting the products should share, then open Advertiser → Product feeds, pick the campaign and paste your feed URL. Each product needs an id, a title, a link and an image; a sale price wins over the price, and Price in the ad title puts it after the name. The first sync runs right away. The same works through the API:
<item> <g:id>FP-TENT-2</g:id> <title>Ridgeline 2 backpacking tent</title> <description>Two-person, 1.9 kg, pitches in four minutes.</description> <link>https://fjellpeak.com/tents/ridgeline-2</link> <g:image_link>https://fjellpeak.com/img/ridgeline-2.jpg</g:image_link> <g:price>289.00 EUR</g:price> <g:sale_price>249.00 EUR</g:sale_price> <g:availability>in_stock</g:availability> </item>
curl -X POST https://<your panel>/api/v1/product-feeds \
-H "Authorization: Bearer $API_KEY" \
-d '{"campaign_id": 454710, "url": "https://www.goadserver.com/demo/product-feeds/feed.xml",
"refresh_hours": 24, "price_in_title": true}'About the format: Product feed ads · Native zones: native demo · All formats: Ad formats · More demos: all live demos
Every format on this page is part of the GoAdserver ad server. Talk to us about your platform.
Contact us