In regular targeted advertising you buy an audience from a single platform. In native advertising you buy from hundreds of independent sites that are connected to the network and sell it space for recommendation widgets. The network takes your creative and shows it on news sites, entertainment portals, blogs and apps. That is why an affiliate's main job in native is not so much choosing an audience as choosing placements: weeding out weak sites and putting more budget on strong ones.
What are native ads and teaser networks
Native advertising is an ad styled to match the page content. Most often it is a “Recommended” or “You may also like” block under an article: an image, a headline, sometimes a brand name. The user clicks it like another article and lands on your pre-lander or landing page.
Teaser networks are a historically related format: short “teaser” blocks with a bright image and an intriguing headline. Today the line is blurred: the same networks sell both tidy native ads and aggressive teasers, and the difference lies in the creative rules and in which sites you end up on.
The big players differ in audience and strictness:
| Network | What sets it apart | Click ID in the link |
|---|---|---|
| Taboola | Major publishers, strict creative and landing page review | tblci |
| Outbrain | Premium media, content quality requirements | ob_click_id |
| MGID | Broad reach, many geos and formats | no click ID of its own |
More on each one on the Taboola, Outbrain and MGID pages in the source catalog.
Buying is mostly on a CPC basis, per click. You set a bid, and the network serves the ad on every site where the bid wins. That leads to the key trait of native: a campaign's average result is made up of very different placements, and one bad site with high volume can eat the profit from ten good ones.
Why placement quality in native is so uneven
The network wants volume: the more sites connected, the more impressions it sells. The site owner wants clicks: they get a share of your bid. That leads to a few typical problems.
- Accidental clicks. The widget sits right up against the content, and on a phone it is easy to brush it while scrolling. Such a visitor leaves the landing page within a second.
- Incentivized and purchased visits. Some sites buy traffic cheaper than they sell clicks to the network, and anything ends up in that traffic: popunders, redirects, clicks from other networks.
- Automated visits. Scripts, auto-refreshing pages, bots that “read” the site and click widgets along the way. Sometimes it is deliberate fraud by the site owner, sometimes parasitic traffic the owner does not even know about.
- Fly-by-night sites. A placement appears in the network, collects money for a week and disappears or changes its ID.
- Reviews. The network and its partners check landing pages, and spy tools collect your creatives and pages. These visits also arrive as clicks.
All of this means that “native traffic” is not one quantity. The same creative is profitable on one site and gets zero conversions from a thousand clicks on another. How to tell real visits from automation in general is covered in signs of bot traffic, and how to check traffic layer by layer in how to check traffic quality.
Placement ID in macros: you cannot optimize native without it
Every native network can insert data about the impression into your link through macros, placeholders in curly braces that the network replaces with real values at the moment of the click. The most important value is the placement ID: the site, widget or zone where the impression happened.
Macro names differ between networks: it might be {site}, {widget_id}, {site_id}, {publisher} or {zoneid}. The exact list is in the network's help. Besides the placement, it is useful to pass:
- the campaign ID and creative ID, to see which ad works on which site;
- the cost per click, so spend is counted for every click;
- the network's click ID, so you can send conversions back to the network.
An example link for a native campaign (macro names are placeholders; check them against your network):
https://your-landing.com/?sub1={site_id}&sub2={campaign_id}&sub3={creative_id}&cost={cpc}&ext_id={click_id}
Here sub1 carries the placement, sub2 and sub3 the campaign and creative, cost the cost per click, and ext_id the network's click ID for the postback. General principles of working with parameters are covered in UTM parameters and ad platform macros, and linking click IDs in click ID and sub ID.
Tip. Settle on a fixed scheme for yourself: placement always in
sub1, creative always insub3. Then reports across different networks and campaigns read the same way, and you never mix up which parameter holds what.
Publisher blacklists and whitelists
The main optimization lever in native is the publisher blacklist: a list of sites or widgets where the campaign will no longer be shown. The blacklist is kept in the network's own dashboard, and only there does it save money: as long as a placement is in the campaign, you pay for its clicks, whatever happens afterwards on your side.
How to build a blacklist without fooling yourself:
- Collect enough data. A placement with twenty clicks and no conversions has not proven anything yet. Make decisions on sites where the click count is already comparable to your cost per conversion divided by your bid.
- Look at money, not clicks. Compare spend and revenue for each placement. A cheap click on a site that does not convert costs more than an expensive click that brings leads.
- Account for the bot share. If the filter blocks almost all of a placement's traffic as automated, that is a strong signal: there is no point paying for its clicks, even if a couple of visits got through.
- Watch for delayed conversions. In native, the path to purchase can be long. Do not block a placement the same day if the offer has a hold period or conversions arrive later.
- Move winning placements to a whitelist. A separate campaign on a proven list of sites with a higher bid is the classic way to scale in native. Other approaches are in scaling ad campaigns: vertical and horizontal.
The flip side is the whitelist: a campaign that runs only on pre-selected placements. It gives stability but limits volume, so people usually keep a “scouting” campaign on broad traffic with a strict blacklist running in parallel.
Bots in native: how to filter them out
Filtering in native solves two problems. The first is keeping automation away from the offer, since it spoils the network's stats and raises fraud suspicions. The second is getting an honest picture for each placement: how many of its clicks were people.
Signals that work in native traffic:
- Data center networks and visits with no ISP. A real reader of a news site comes from home or mobile internet. A click from a cloud hosting address is almost always a program. Details in VPN, proxy and data center IPs.
- No JavaScript. Simple scrapers do not run scripts, and a required JS check blocks them.
- Signs of browser automation. More sophisticated bots run in a real headless browser but leave traces: signs of programmatic control and a browser fingerprint that does not add up to a real device.
- Repeat clicks from one address. In native, the same widget follows a reader across different pages, so several clicks from one IP are normal, but several dozen are not.
- The first clicks after launch. A new campaign first collects checks from the network, its partners and spy tools.
The general approach to filtering is covered in how to filter out bots in ad traffic. In native it is important not to overdo it: a strict filter that cuts every visit from an in-app browser will also remove real readers who opened the article in a publisher's mobile app.
How ArtisanClo handles native
ArtisanClo has a ready-made Native and push protection profile for native advertising. It is applied by the traffic source chosen in the first step of the flow: when you create a source, choose the template of the network you need (Taboola, Outbrain, MGID or another), and the platform parameters are mapped to campaign parameters while the protection in step two adjusts to native.
| Setting | Value for native | Why |
|---|---|---|
| Block without ISP | On | Visits with no ISP usually come from servers |
| Warm-up | 100 clicks | The first visits to a new campaign are more often checks |
| Required JS | Yes | Simple bots stumble on the script |
| Clicks per IP per day (Balanced level) | 5 | Native shows ads to the same person repeatedly |
Warm-up and the per-IP click limit are available from the Professional plan and during the free trial. On top of that you choose the strictness: Soft, Balanced or Strict. For most native campaigns the starting point is Balanced.
What is especially useful in native:
- A report by placement. Pass the site or widget ID into a campaign parameter, for example
sub1={site_id}, and open the Money by slice table in Reports by that parameter. Every placement shows clicks, conversions, revenue, cost and ROI. Turn off placements where the filter blocks almost everything in the network itself, so you stop paying for them. - Cost from the link. The From the link model takes the price the network inserts via a macro, and spend is counted for every click that reached the offer.
- A reason for every visit. The click log shows why a visit went to the White Page: “High-risk network”, “Too many clicks from one IP”, “A program, not a browser” and dozens of other reasons.
- A shared bot list. An address confidently caught as a bot or a reviewer for any client of the service gets the White Page immediately in your flow too.
- A shield based on the click ID. The shield lets through to the offer only visitors with an ad click ID: for Taboola that is
tblci, for Outbrainob_click_id. MGID has no click ID of its own, so the shield does not suit it. - Feedback to the network. In the source card you set up a postback to the source: the network receives its click ID and the conversion status and can optimize delivery based on your results.
The per-platform recipes for native recommend connecting with the PHP file on your server, with the offer in Redirect or Loading mode. The JS tag works too. Your site and pages stay with you.
Native ads tracking: from click to ROI per placement
The minimum setup without which native cannot be optimized:
- A link with macros: placement, campaign, creative, cost per click and the network's click ID.
- Passing the click ID to the affiliate network. Your click ID goes into a parameter of the affiliate link, for example
sub1oraff_sub. - A postback from the affiliate network. The network reports a lead or sale against that ID; how to set it up is covered in what is a postback.
- A postback to the native network. The conversion is sent back to the native network, and its algorithm starts favoring placements that convert.
- A report by placement. Decisions about the blacklist and bids are made on the profit of each placement, not on campaign averages.
It is best to calculate ROI in one place where cost from the link and revenue from the postback come together. Formulas and common mistakes are in how to calculate profit and ROI.
Tip. Do not change the bid, the creative and the blacklist at the same time. If profit goes up after the change, you will not know what actually worked. Pull one lever at a time.
Network policies: creative and landing page
Major native networks review both the ads and the pages they lead to. Each has its own requirements, and they change regularly, so check them in the network's own help before launch. What they all have in common:
- the headline must not promise what is not on the page;
- images must have no shocking content and must not imitate system notifications;
- the landing page must match the ad in topic and content;
- restricted verticals (finance, health, gambling) require permits and disclaimers.
Before launching on a new network, read its policies in full, and for a restricted vertical prepare the permits and disclaimer texts in advance.
Common mistakes in native advertising
- Optimizing the campaign as a whole. The average ROI hides both profitable and losing placements. Decisions are made per site.
- Blacklisting too early. A placement is blocked after twenty clicks, even though statistically that says nothing yet.
- No placement ID in the link. Without a placement macro you cannot build a report by site, and you cannot reconstruct it after the fact.
- A filter that is too strict. A high pass rate in native is not a problem in itself. Worry if almost nobody reaches the offer: it means the rules are cutting real people along with the bots.
- No postback to the network. The network's algorithm optimizes for clicks instead of conversions and keeps sending traffic to weak placements.
The bottom line
Native advertising is a marketplace of hundreds of placements, not a single audience. Pass the site or widget ID in a parameter, filter out automation, bring cost and revenue together in one report and make decisions per placement: block the losers in the network and move the winners to a separate whitelist. The same logic works in neighboring formats too; see the article on push and pop traffic.



