1<!DOCTYPE html><html lang="en-US"><head><meta charSet="utf-8"/><title>Docs</title><meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"/><meta name="author" content="Transfon"/><meta name="robots" content="max-snippet:-1, max-image-preview:large, max-video-preview:-1"/><meta name="description" content="Documentation for Transfon products."/><meta property="og:description" content="Documentation for Transfon products."/><meta property="og:title" content="Docs"/><meta property="og:url" content="https://www.transfon.com/docs"/><meta property="og:site_name" content="Transfon"/><meta property="og:type" content="website"/><meta property="og:image" content="https://www.transfon.com/images/transfon-1.png"/><meta name="twitter:card" content="summary_large_image"/><meta name="twitter:image" content="https://www.transfon.com/images/transfon-1.png"/><meta name="twitter:title" content="Docs"/><meta name="twitter:creator" content="@transfon"/><link rel="canonical" href="https://www.transfon.com/docs"/><link rel="preload" href="/fonts/exo-2-v10-latin-100.woff2" as="font" crossorigin=""/><link rel="preload" href="/fonts/exo-2-v10-latin-200.woff2" as="font" crossorigin=""/><link rel="preload" href="/fonts/exo-2-v10-latin-300.woff2" as="font" crossorigin=""/><link rel="preload" href="/fonts/exo-2-v10-latin-500.woff2" as="font" crossorigin=""/><link rel="preload" href="/fonts/exo-2-v10-latin-600.woff2" as="font" crossorigin=""/><link rel="preload" href="/fonts/exo-2-v10-latin-700.woff2" as="font" crossorigin=""/><link rel="preload" href="/fonts/exo-2-v10-latin-800.woff2" as="font" crossorigin=""/><link rel="preload" href="/fonts/exo-2-v10-latin-regular.woff2" as="font" crossorigin=""/><link rel="apple-touch-icon" sizes="57x57" href="https://www.transfon.com/images/apple-icon-57x57.png"/><link rel="apple-touch-icon" sizes="60x60" href="https://www.transfon.com/images/apple-icon-60x60.png"/><link rel="apple-touch-icon" sizes="72x72" href="https://www.transfon.com/images/apple-icon-72x72.png"/><link rel="apple-touch-icon" sizes="76x76" href="https://www.transfon.com/images/apple-icon-76x76.png"/><link rel="apple-touch-icon" sizes="114x114" href="https://www.transfon.com/images/apple-icon-114x114.png"/><link rel="apple-touch-icon" sizes="120x120" href="https://www.transfon.com/images/apple-icon-120x120.png"/><link rel="apple-touch-icon" sizes="144x144" href="https://www.transfon.com/images/apple-icon-144x144.png"/><link rel="apple-touch-icon" sizes="152x152" href="https://www.transfon.com/images/apple-icon-152x152.png"/><link rel="apple-touch-icon" sizes="180x180" href="https://www.transfon.com/images/apple-icon-180x180.png"/><link rel="icon" type="image/png" sizes="192x192" href="https://www.transfon.com/images/android-icon-192x192.png"/><link rel="icon" type="image/png" sizes="32x32" href="https://www.transfon.com/images/favicon-32x32.png"/><link rel="icon" type="image/png" sizes="96x96" href="https://www.transfon.com/images/favicon-96x96.png"/><link rel="icon" type="image/png" sizes="16x16" href="https://www.transfon.com/images/favicon-16x16.png"/><meta name="next-head-count" content="38"/><link rel="preload" href="/_next/static/css/17b8343c380923e7.css" as="style"/><link rel="stylesheet" href="/_next/static/css/17b8343c380923e7.css" data-n-g=""/><noscript data-n-css=""></noscript></head><body class="font-sans"><div id="__next"><div class="w-full min-h-full dark:bg-gray-800 dark:text-white antialiased font-body"><div id="sticky-wrapper" class="bg-white dark:bg-gray-800 z-30 border-gray-200 dark:border-gray-600"><div class="mx-auto text-center" id="main-nav"><div class="relative text-left text-white" data-headlessui-state=""><div class="relative"><div class="flex md:bg-transparent justify-between items-center px-5 lg:px-0 md:justify-start dark:bg-gray-800 mx-auto max-w-screen-lg unis-main-nav-root bg-white h-[56px] md:h-[88px]"><a href="/" class="flex-shrink-0 flex"><span class="sr-only">Transfon</span><img id="logo" class="md:inline-block " width="144" height="auto" src="/images/logo-black.svg" alt="Transfon"/></a><div class="-my-2 flex space-x-3 items-center md:hidden"><button class="rounded-md p-2 inline-flex items-center justify-center focus:outline-none text-gray-400 hover:text-gray-500 hover:bg-gray-100" type="button" aria-expanded="false" data-headlessui-state=""><span class="sr-only">
1Open menu</span><svg xmlns="http://www.w3.org/2000/svg" class="h-6 w-6" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 6h16M4 12h16M4 18h16"></path></svg></button></div><nav class="hidden md:flex-1 md:flex md:items-center md:justify-end h-full"><div class="dropdown h-full"><button class="group bg-transparent font-sans rounded-md inline-flex items-center text-base font-medium focus:outline-none relative transition-colors duration-200 h-full dropdown-toggle px-2.5 lg:px-5 text-gray-500 hover:text-gray-900 dark:text-white dark:hover:text-gray-200" type="button"><span>Solutions</span><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true" class="ml-2 h-5 w-5 transition-transform duration-200 rotate-0"><path fill-rule="evenodd" d="M5.293 7.293a1 1 0 011.414 0L10 10.586l3.293-3.293a1 1 0 111.414 1.414l-4 4a1 1 0 01-1.414 0l-4-4a1 1 0 010-1.414z" clip-rule="evenodd"></path></svg></button><div class="dropdown-menu absolute z-50 opacity-100 inset-x-0 top-full hidden"><div class="bg-white shadow-lg border-t border-gray-200 overflow-hidden"><div class="max-w-screen-lg mx-auto"><div class="flex"><div class="flex-1 py-6 px-4 min-w-0"><div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-8"><a href="/solutions/publisher" class="group flex items-start p-4 rounded-lg hover:bg-gray-50 transition-colors duration-200"><div class="flex-shrink-0 flex items-center justify-center h-10 w-10 rounded-md bg-tblueb text-white mr-4"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true" class="w-6 h-6"><path stroke-linecap="round" stroke-linejoin="round" d="M19 20H5a2 2 0 01-2-2V6a2 2 0 012-2h10a2 2 0 012 2v1m2 13a2 2 0 01-2-2V7m2 13a2 2 0 002-2V9a2 2 0 00-2-2h-2m-4-3H9M7 16h6M7 8h6v4H7V8z"></path></svg></div><div class="flex-1 min-w-0"><h3 class="text-base font-semibold text-gray-900 group-hover:text-blue-600 mb-1 whitespace-nowrap">Publisher Strategies</h3><p class="text-sm text-gray-500 group-hover:text-gray-700">Revitalize your publishing websites with Transfon UXP for a modernized user experience.</p></div></a></div></div></div></div></div></div></div><div class="dropdown h-full"><button class="group bg-transparent font-sans rounded-md inline-flex items-center text-base font-medium focus:outline-none relative transition-colors duration-200 h-full dropdown-toggle px-2.5 lg:px-5 text-gray-500 hover:text-gray-900 dark:text-white dark:hover:text-gray-200" type="button"><span>Products</span><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true" class="ml-2 h-5 w-5 transition-transform duration-200 rotate-0"><path fill-rule="evenodd" d="M5.293 7.293a1 1 0 011.414 0L10 10.586l3.293-3.293a1 1 0 111.414 1.414l-4 4a1 1 0 01-1.414 0l-4-4a1 1 0 010-1.414z" clip-rule="evenodd"></path></svg></button><div class="dropdown-menu absolute z-50 opacity-100 inset-x-0 top-full hidden"><div class="bg-white shadow-lg border-t border-gray-200 overflow-hidden"><div class="max-w-screen-lg mx-auto"><div class="flex"><div class="flex-1 py-6 px-4 min-w-0"><div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-8"><a href="https://www.uniconsent.com" class="group flex items-start p-4 rounded-lg hover:bg-gray-50 transition-colors duration-200"><div class="flex-shrink-0 flex items-center justify-center h-10 w-10 rounded-md bg-tblueb text-white mr-4"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true" class="w-6 h-6"><path stroke-linecap="round" stroke-linejoin="round" d="M11.049 2.927c.3-.921 1.603-.921 1.902 0l1.519 4.674a1 1 0 00.95.69h4.915c.969 0 1.371 1.24.588 1.81l-3.976 2.888a1 1 0 00-.363 1.118l1.518 4.674c.3.922-.755 1.688-1.538 1.118l-3.976-2.888a1 1 0 00-1.176 0l-3.976 2.888c-.783.57-1.838-.197-1.538-1.118l1.518-4.674a1 1 0 00-.363-1.118l-3.976-2.888c-.784-.57-.38-1.81.588-1.81h4.914a1 1 0 00.951-.69l1.519-4.674z"></path></svg></div><div class="flex-1 min-w-0"><h3 class="text-base font-semibold text-gray-900 group-hover:text-blue-600 mb-1 whitespace-nowrap">UniConsent CMP</h3><p class="text-sm text-gray-500 group-hover:text-gray-700">Ensure GDPR/CCPA compliance for publishers with UniConsent, an IAB Europe certified consent management platform.</p></div></a><a href="/security" class="group flex items-start p-4 rounded-lg hover:bg-gray-50 transition-colors duration-200"><div class="flex-shrink-0 flex items-center justify-center h-10 w-10 rounded-md bg-tblueb text-white mr-4"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true" class="w-6 h-6"><path stroke-linecap="round" stroke-linejoin="round" d="M9 12l2 2 4-4m5.618-4.016A11.955 11.955 0 0112 2.944a11.955 11.955 0 01-8.618 3.04A12.02 12.02 0 003 9c0 5.591 3.824 10.29 9 11.622 5.176-1.332 9-6.03 9-11.622 0-1.042-.133-2.052-.382-3.016z"></path></svg></div><div class="flex-1 min-w-0"><h3 class="text-base font-semibold text-gray-900 group-hover:text-blue-600 mb-1 whitespace-nowrap">Transfon Security</h3><p class="text-sm text-gray-500 group-hover:text-gray-700">Protect your web applications and data while optimizing website or mobile API performance with Transfon Security.</p></div></a><a href="/studio" class="group flex items-start p-4 rounded-lg hover:bg-gray-50 transition-colors duration-200"><div class="flex-shrink-0 flex items-center justify-center h-10 w-10 rounded-md bg-tblueb text-white mr-4"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true" class="w-6 h-6"><path stroke-linecap="round" stroke-linejoin="round" d="M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"></path></svg></div><div class="flex-1 min-w-0"><h3 class="text-base font-semibold text-gray-900 group-hover:text-blue-600 mb-1 whitespace-nowrap">Transfon Studio</h3><p class="text-sm text-gray-500 group-hover:text-gray-700">AI-powered headless CMS. Create, optimize, and distribute content across every channel.</p></div></a><a href="https://www.unisignin.com/" class="group flex items-start p-4 rounded-lg hover:bg-gray-50 transition-colors duration-200"><div class="flex-shrink-0 flex items-center justify-center h-10 w-10 rounded-md bg-tblueb text-white mr-4"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true" class="w-6 h-6"><path stroke-linecap="round" stroke-linejoin="round" d="M17 20h5v-2a3 3 0 00-5.356-1.857M17 20H7m10 0v-2c0-.656-.126-1.283-.356-1.857M7 20H2v-2a3 3 0 015.356-1.857M7 20v-2c0-.656.126-1.283.356-1.857m0 0a5.002 5.002 0 019.288 0M15 7a3 3 0 11-6 0 3 3 0 016 0zm6 3a2 2 0 11-4 0 2 2
10 014 0zM7 10a2 2 0 11-4 0 2 2 0 014 0z"></path></svg></div><div class="flex-1 min-w-0"><h3 class="text-base font-semibold text-gray-900 group-hover:text-blue-600 mb-1 whitespace-nowrap">UniSignIn</h3><p class="text-sm text-gray-500 group-hover:text-gray-700">Enhance audience, traffic, and advertising revenue by effectively building and utilizing first-party audience data.</p></div></a><a href="https://www.pubperf.com/" class="group flex items-start p-4 rounded-lg hover:bg-gray-50 transition-colors duration-200"><div class="flex-shrink-0 flex items-center justify-center h-10 w-10 rounded-md bg-tblueb text-white mr-4"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true" class="w-6 h-6"><path stroke-linecap="round" stroke-linejoin="round" d="M8 13v-1m4 1v-3m4 3V8M8 21l4-4 4 4M3 4h18M4 4h16v12a1 1 0 01-1 1H5a1 1 0 01-1-1V4z"></path></svg></div><div class="flex-1 min-w-0"><h3 class="text-base font-semibold text-gray-900 group-hover:text-blue-600 mb-1 whitespace-nowrap">PubPerf</h3><p class="text-sm text-gray-500 group-hover:text-gray-700">Unlock the potential of your digital publishing with PubPerf, an all-in-one dashboard for website speed, content performance, revenue analytics, and optimization.</p></div></a><a href="https://www.biddingstack.com/" class="group flex items-start p-4 rounded-lg hover:bg-gray-50 transition-colors duration-200"><div class="flex-shrink-0 flex items-center justify-center h-10 w-10 rounded-md bg-tblueb text-white mr-4"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true" class="w-6 h-6"><path stroke-linecap="round" stroke-linejoin="round" d="M11.049 2.927c.3-.921 1.603-.921 1.902 0l1.519 4.674a1 1 0 00.95.69h4.915c.969 0 1.371 1.24.588 1.81l-3.976 2.888a1 1 0 00-.363 1.118l1.518 4.674c.3.922-.755 1.688-1.538 1.118l-3.976-2.888a1 1 0 00-1.176 0l-3.976 2.888c-.783.57-1.838-.197-1.538-1.118l1.518-4.674a1 1 0 00-.363-1.118l-3.976-2.888c-.784-.57-.38-1.81.588-1.81h4.914a1 1 0 00.951-.69l1.519-4.674z"></path></svg></div><div class="flex-1 min-w-0"><h3 class="text-base font-semibold text-gray-900 group-hover:text-blue-600 mb-1 whitespace-nowrap">BiddingStack</h3><p class="text-sm text-gray-500 group-hover:text-gray-700">Simplify your programmatic ad-stack and bring header bidding in-house for enhanced control and efficiency.</p></div></a><a href="https://www.adstxt.dev" class="group flex items-start p-4 rounded-lg hover:bg-gray-50 transition-colors duration-200"><div class="flex-shrink-0 flex items-center justify-center h-10 w-10 rounded-md bg-tblueb text-white mr-4"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true" class="w-6 h-6"><path stroke-linecap="round" stroke-linejoin="round" d="M12 19l9 2-9-18-9 18 9-2zm0 0v-8"></path></svg></div><div class="flex-1 min-w-0"><h3 class="text-base font-semibold text-gray-900 group-hover:text-blue-600 mb-1 whitespace-nowrap">Ads.txt Manager</h3><p class="text-sm text-gray-500 group-hover:text-gray-700">Effortlessly manage ads.txt with our tool designed for publishers and agencies, providing both management and insightful analytics.</p></div></a></div></div></div></div></div></div></div><a href="/blog" class="text-base font-medium px-2.5 lg:px-5 text-gray-500 hover:text-gray-900 dark:text-white dark:hover:text-gray-200">Insights</a></nav></div></div></div><div style="position:fixed;top:1px;left:1px;width:1px;height:0;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;border-width:0;display:none"></div></div></div><main class="flex flex-col flex-1 w-full lg:px-0 px-6 py-16 mx-auto max-w-screen-lg bg-white dark:bg-gray-800"><div class="flex flex-col-reverse h-full md:flex-row"><div class="mt-10 md:mt-0 flex-shrink-0 md:w-1/3 md:pr-4 lg:pr-8 xl:pr-12"><div id="doc-nav"><div class="mb-3 -ml-1.5"><button class="flex items-center font-bold text-base mb-1"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 24 24" id="arrow-security" class="text-gray-400 font-normal opacity-50 text-xl transform rotate-90" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path fill="none" d="M0 0h24v24H0V0z"></path><path d="M8.59 16.59 13.17 12 8.59 7.41 10 6l6 6-6 6-1.41-1.41z"></path></svg>Transfon Security</button><ul id="security" class=""><li class="block pl-3.5"><a href="/docs/unknown"><div class="px-1.5 rounded block leading-tight py-2 text-sm text-secondary hover:text-primary hover:bg-secondary">Introduction</div></a></li><li class="block pl-3.5"><a href="/docs/unknown"><div class="px-1.5 rounded block leading-tight py-2 text-sm text-secondary hover:text-primary hover:bg-secondary">Dashboard Overview</div></a></li><li class="block pl-3.5"><a href="/docs/unknown"><div class="px-1.5 rounded block leading-tight py-2 text-sm text-secondary hover:text-primary hover:bg-secondary">Managing Organizations</div></a></li><li class="block pl-3.5"><a href="/docs/unknown"><div class="px-1.5 rounded block leading-tight py-2 text-sm text-secondary hover:text-primary hover:bg-secondary">Managing Projects</div></a></li><li class="block pl-3.5"><a href="/docs/unknown"><div class="px-1.5 rounded block leading-tight py-2 text-sm text-secondary hover:text-primary hover:bg-secondary">Traffic Analytics</div></a></li><li class="block pl-3.5"><a href="/docs/unknown"><div class="px-1.5 rounded block leading-tight py-2 text-sm text-secondary hover:text-primary hover:bg-secondary">HTTP Events</div></a></li><li class="block pl-3.5"><a href="/docs/unknown"><div class="px-1.5 rounded block leading-tight py-2 text-sm text-secondary hover:text-primary hover:bg-secondary">User Profiles & Custom Data</div></a></li><li class="block pl-3.5"><a href="/docs/unknown"><div class="px-1.5 rounded block leading-tight py-2 text-sm text-secondary hover:text-primary hover:bg-secondary">Decision Rules</div></a></li><li class="block pl-3.5"><a href="/docs/unknown"><div class="px-1.5 rounded block leading-tight py-2 text-sm text-secondary hover:text-primary hover:bg-secondary">Block & Allow Rules</div></a></li><li class="block pl-3.5"><a href="/docs/unknown"><div class="px-1.5 rounded block leading-tight py-2 text-sm text-secondary hover:text-primary hover:bg-secondary">How to Protect Your Service API</div></a></li><li class="block pl-3.5"><a href="/docs/unknown"><div class="px-1.5 rounded block leading-tight py-2 text-sm text-secondary hover:text-primary hover:bg-secondary">How to Filter Invalid Traffic (IVT)</div></a></li><li class="block pl-3.5"><a href="/docs/unknown"><div class="px-1.5 rounded block leading-tight py-2 text-sm text-secondary hover:text-primary hover:bg-secondary">How to Protect Your Ad Budget</div></a></li><li class="block pl-3.5"><a href="/docs/unknown"><div class="px-1.5 rounded block leading-tight py-2 text-sm text-secondary hover:text-primary hover:bg-secondary">How to Filter Bots in GA4 via GTM</div></a></li><li class="block pl-3.5"><a href="/docs/unknown"><div class="px-1.5 rounded block leading-tight py-2 text-sm text-secondary hover:text-primary hover:bg-secondary">HTTP API</div></a></li><li class="block pl-3.5"><a href="/docs/unknown"><div class="px-1.5 rounded block leading-tight py-2 text-sm text-secondary hover:text-primary hover:bg-secondary">JavaScript API</div></a></li><li class="block pl-3.5"><a href="/docs/unknown"><div class="px-1.5 rounded block leading-tight py-2 text-sm text-secondary hover:text-primary hover:bg-secondary">Account & Security Settings</div></a></li><li class="block pl-3.5"><a href="/docs/unknown"><div class="px-1.5 rounded block leading-tight py-2 text-sm text-secondary hover:text-primary hover:bg-secondary">Billing & Plans</div></a></li><li class="block pl-3.5"><a href="/docs/unknown"><div class="px-1.5 rounded block leading-tight py-2 text-sm text-secondary hover:text-primary hover:bg-secondary">SSO / SAML Setup</div></a></li></ul></div><div class="mb-3 -ml-1.5"><button class="flex items-center font-bold text-base mb-1"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 24 24" id="arrow-studio" class="text-gray-400 font-normal opacity-50 text-xl transform rotate-90" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path fill="none" d="M0 0h24v24H0V0z"></path><path d="M8.59 16.59 13.17 12 8.59 7.41 10 6l6 6-6 6-1.41-1.41z"></path></svg>Transfon Studio</button><ul id="studio" class=""><li class="block pl-3.5"><a href="/docs/unknown"><div class="px-1.5 rounded block leading-tight py-2 text-sm text-secondary hover:text-primary hover:bg-secondary">Organization Management</div></a></li><li class="block pl-3.5"><a href="/docs/unknown"><div class="px-1.5 rounded block leading-tight py-2 text-sm text-secondary hover:text-primary hover:bg-secondary">Project Configuration</div></a></li><li class="block pl-3.5"><a href="/docs/unknown"><div class="px-1.5 rounded block leading-tight py-2 text-sm text-secondary hover:text-primary hover:bg-secondary">Content Management</div></a></li><li class="block pl-3.5"><a href="/docs/unknown"><div class="px-1.5 rounded block leading-tight py-2 text-sm text-secondary hover:text-primary hover:bg-secondary">Import Contents</div></a></li><li class="block pl-3.5"><a href="/docs/unknown"><div class="px-1.5 rounded block leading-tight py-2 text-sm text-secondary hover:text-primary hover:bg-secondary">Media Content Management</div></a></li><li class="block pl-3.5"><a href="/docs/unknown"><div class="px-1.5 rounded block leading-tight py-2 text-sm text-secondary hover:text-primary hover:bg-secondary">Controlling Player Styles</div></a></li><li class="block pl-3.5"><a href="/docs/unknown"><div class="px-1.5 rounded block leading-tight py-2 text-sm text-secondary hover:text-primary hover:bg-secondary">Email & Social Sync</div></a></li><li class="block pl-3.5"><a href="/docs/unknown"><div class="px-1.5 rounded block leading-tight py-2 text-sm text-secondary hover:text-primary hover:bg-secondary">Connect Integrations</div></a></li><li class="block pl-3.5"><a href="/docs/unknown"><div class="px-1.5 rounded block leading-tight py-2 text-sm text-secondary hover:text-primary hover:bg-secondary">Account & Billing</div></a></li></ul></div><div class="flex items-stretch shadow-sm rounded text-primary inline-flex mt-4"><label class="flex items-center px-3 mb-0 font-medium border-t border-b border-l rounded-l bg-secondary border-secondary whitespace-nowrap text-xs py-1 h-button-sm">Theme</label><select id="theme-select" class="inline-block pl-3 pr-8 py-0 border rounded shadow-sm bg-primary border-secondary focus-ring h-button-sm text-sm block w-full pl-4 rounded-l-none rounded-r !shadow-none text-xs "><option value="light">Light</option><option value="dark">Dark</option><option value="system">System</option></select></div></div></div><div class="flex-1 relative min-w-0"><div class="mb-6"><nav class="flex" aria-label="Breadcrumb"><ol itemscope="" itemType="https://schema.org/BreadcrumbList" class="flex items-center space-x-4"><li itemscope="" itemProp="itemListElement" itemType="https://schema.org/ListItem"><div><a itemProp="item" href="/" class="text-gray-400 hover:text-gray-500"><span itemProp="name">Home</span></a></div><meta itemProp="position" content="1"/></li><li itemscope="" itemProp="itemListElement" itemType="https://schema.org/ListItem"><div class="flex items-center"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true" class="flex-shrink-0 h-5 w-5 text-gray-400"><path fill-rule="evenodd" d="M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z" clip-rule="evenodd"></path></svg><span itemProp="name" class="ml-4 text-sm font-medium text-gray-500 hover:text-gray-600">Docs</span></div><meta itemProp="position" content="2"/></li></ol></nav></div><div><h1 class="text-3xl mb-5 font-semibold">Transfon Documentation</h1><p class="mb-8 text-lg text-secondary">Guides and references for Transfon products.</p><div class="grid grid-cols-1 gap-6 mb-8 lg:grid-cols-2"><div class="h-full p-6 border rounded flex flex-col"><div class="inline-block w-6 h-6"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true" class="text-secondary"><path stroke-linecap="round" stroke-linejoin="round" d="M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"></path></svg></div><h2 class="text-lg font-semibold text-primary mb-2">Transfon Security</h2><p class="text-secondary mb-4 flex-grow">Web security and bot protection. Block bots, DDoS, click fraud, and invalid traffic across websites and APIs.</p><p><a href="/docs/security/introduction" class="box-border relative inline-flex items-center justify-center text-center no-underline leading-none whitespace-nowrap font-semibold rounded flex-shrink-0 transition select-none overflow-hidden focu
1s-ring text-primary hover:bg-secondary focus:border-blue-500 border border-gray-200 dark:border-gray-600 bg-primary h-button py-1.5 px-2">Read the docs</a></p></div><div class="h-full p-6 border rounded flex flex-col"><div class="inline-block w-6 h-6"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true" class="text-secondary"><path stroke-linecap="round" stroke-linejoin="round" d="M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"></path></svg></div><h2 class="text-lg font-semibold text-primary mb-2">Transfon Studio</h2><p class="text-secondary mb-4 flex-grow">AI-powered headless CMS. Manage organizations, projects, content, media, players, and integrations.</p><p><a href="/docs/studio/organization-management" class="box-border relative inline-flex items-center justify-center text-center no-underline leading-none whitespace-nowrap font-semibold rounded flex-shrink-0 transition select-none overflow-hidden focus-ring text-primary hover:bg-secondary focus:border-blue-500 border border-gray-200 dark:border-gray-600 bg-primary h-button py-1.5 px-2">Read the docs</a></p></div></div></div></div></div></main></div><section class="bg-gray-50 border-t border-gray-200 px-4 py-10"><div class="mx-auto max-w-screen-lg flex flex-col md:flex-row md:items-center md:justify-between gap-6"><div class="text-center md:text-left"><h2 class="text-xl md:text-2xl font-semibold tracking-tight text-gray-900">Stay ahead of the publishing curve</h2><p class="mt-1 text-sm text-gray-500">Privacy, security, monetization, and performance insights. A few emails a month, no spam.</p></div><form id="subscribe-form" method="POST" action="/api/subscribe" data-lead-form="true" data-success="You're in. Check your inbox for a confirmation." class="w-full md:w-auto md:min-w-[26rem]"><div class="hidden" aria-hidden="true"><label for="subscribe-website">Website</label><input type="text" id="subscribe-website" name="website" tabindex="-1" autoComplete="off"/></div><div class="flex flex-col sm:flex-row gap-2"><label for="subscribe-email" class="sr-only">Email address</label><input type="email" id="subscribe-email" name="email" required="" autoComplete="email" placeholder="[email protected]" class="flex-1 py-2.5 px-4 text-sm text-gray-900 bg-white border border-gray-300 rounded-md shadow-sm focus:ring-blue-500 focus:border-blue-500"/><button type="submit" class="inline-flex items-center justify-center px-5 py-2.5 rounded-md text-sm font-semibold text-white bg-gray-900 hover:bg-gray-700 disabled:opacity-60 transition-colors">Subscribe</button></div><div class="cf-turnstile mt-2" data-sitekey="0x4AAAAAABCvyFlGQYkzQ8sk" data-appearance="interaction-only" data-size="flexible" data-theme="light"></div><p data-lead-status="true" role="status" aria-live="polite" class="mt-2 text-sm empty:hidden"></p><p class="mt-2 text-xs text-gray-400">By subscribing you agree to our<!-- --> <a href="/privacy" class="underline hover:text-gray-600">privacy policy</a>.</p></form></div></section><footer class="bg-gray-700 text-white p-10"><div class="mx-auto max-w-screen-lg md:flex"><div class="pb-8 xl:grid xl:grid-cols-3 xl:gap-8"><div class="grid grid-cols-1 md:grid-cols-3 gap-8 xl:col-span-4 text-center md:text-left"><div><h4 class="text-white tracking-wider uppercase font-normal">General</h4><ul class="mt-4 space-y-1 text-sm"><li><a href="https://www.transfon.com/aboutus" class="text-gray-300 hover:text-gray-200">About Us</a></li><li><a href="https://www.transfon.com/careers" class="text-gray-300 hover:text-gray-200">Careers</a></li><li><a href="/docs" class="text-gray-300 hover:text-gray-200">Docs</a></li></ul><div class="mt-4 text-sm text-gray-300">Transfon Ltd<br/><a href="/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="1e767b7272715e6a6c7f706d787170307d7173">[email protected]</a><br/><br/><a href="https://www.transfon.com" target="_blank" rel="noopener noreferrer"><img class="my-2 mx-auto md:mx-0" src="https://www.transfon.com/static/logo-long-white.svg" alt="Transfon" width="120"/></a><br/>
1<p>© 2017 - <!-- -->2026<!-- --> Transfon Ltd. All rights reserved.</p></div></div><div><h4 class="text-white tracking-wider uppercase font-normal">Legal</h4><ul class="mt-4 space-y-1 text-sm"><li><a href="https://www.transfon.com/privacy" class="text-gray-300 hover:text-gray-200">Privacy</a></li><li><a href="https://www.transfon.com/tos" class="text-gray-300 hover:text-gray-200">Terms of Use</a></li></ul></div><div><h4 class="text-white tracking-wider uppercase font-normal">Services and Strategies</h4><ul class="mt-4 space-y-1 text-sm"><li><a href="/partner-program" title="Publisher Services" class="text-gray-300 hover:text-gray-200">Become a Transfon Partner</a></li><li><a href="/solutions/publisher" title="Publisher Services" class="text-gray-300 hover:text-gray-200">Transfon Publisher Services</a></li></ul><h4 class="mt-4 text-white tracking-wider uppercase font-normal">Social</h4><div class="mt-4 flex justify-center md:justify-start space-x-6"><a href="https://www.facebook.com/transfonhq" target="_blank" rel="noopener noreferrer" class="text-gray-300 hover:text-gray-200"><span class="sr-only">Facebook</span><svg fill="currentColor" viewBox="0 0 24 24" aria-hidden="true" class="h-6 w-6"><path fill-rule="evenodd" d="M22 12c0-5.523-4.477-10-10-10S2 6.477 2 12c0 4.991 3.657 9.128 8.438 9.878v-6.987
1h-2.54V12h2.54V9.797c0-2.506 1.492-3.89 3.777-3.89 1.094 0 2.238.195 2.238.195v2.46h-1.26c-1.243 0-1.63.771-1.63 1.562V12h2.773l-.443 2.89h-2.33v6.988C18.343 21.128 22 16.991 22 12z" clip-rule="evenodd"></path></svg></a><a href="https://twitter.com/transfon" target="_blank" rel="noopener noreferrer" class="text-gray-300 hover:text-gray-200"><span class="sr-only">Twitter</span><svg fill="currentColor" viewBox="0 0 24 24" aria-hidden="true" class="h-6 w-6"><path d="M8.29 20.251c7.547 0 11.675-6.253 11.675-11.675 0-.178 0-.355-.012-.53A8.348 8.348 0 0022 5.92a8.19 8.19 0 01-2.357.646 4.118 4.118 0 001.804-2.27 8.224 8.224 0 01-2.605.996 4.107 4.107 0 00-6.993 3.743 11.65 11.65 0 01-8.457-4.287 4.106 4.106 0 001.27 5.477A4.072 4.072 0 012.8 9.713v.052a4.105 4.105 0 003.292 4.022 4.095 4.095 0 01-1.853.07 4.108 4.108 0 003.834 2.85A8.233 8.233 0 012 18.407a11.616 11.616 0 006.29 1.84"></path></svg></a></div></div></div></div></div></footer></div><link rel="stylesheet" href="/dist/bundle.css"/>
vendor: 108 bytes, line 1
1<script data-cfasync="false" src="/cdn-cgi/scripts/5c5dd728/cloudflare-static/email-decode.min.js"></script>
1<script> 2 window.__state = window.__state || {}; 3 window.__state = {"mainNav":{"siteName":"Transfon","variant":"white","logoImg":"https://www.transfon.com/images/logo-black.svg","logoWidth":144,"logoMobileImg":"https://www.transfon.com/images/logo-black.svg","logoMobileWidth":144,"logoCls":"","mobileBlog":"","menu":[{"name":"Solutions","children":[{"name":"Publisher Strategies","description":"Revitalize your publishing websites with Transfon UXP for a modernized user experience.","href":"/solutions/publisher","icon":"NewspaperIcon"}]},{"name":"Products","children":[{"name":"UniConsent CMP","description":"Ensure GDPR/CCPA compliance for publishers with UniConsent, an IAB Europe certified consent management platform.","href":"https://www.uniconsent.com","icon":"StarIcon"},{"name":"Transfon Security","description":"Protect your web applications and data while optimizing website or mobile API performance with Transfon Security.","href":"/security","icon":"ShieldCheckIcon"},{"name":"Transfon Studio","de
3scription":"AI-powered headless CMS. Create, optimize, and distribute content across every channel.","href":"/studio","icon":"DocumentTextIcon"},{"name":"UniSignIn","description":"Enhance audience, traffic, and advertising revenue by effectively building and utilizing first-party audience data.","href":"https://www.unisignin.com/","icon":"UserGroupIcon"},{"name":"PubPerf","description":"Unlock the potential of your digital publishing with PubPerf, an all-in-one dashboard for website speed, content performance, revenue analytics, and optimization.","href":"https://www.pubperf.com/","icon":"PresentationChartBarIcon"},{"name":"BiddingStack","description":"Simplify your programmatic ad-stack and bring header bidding in-house for enhanced control and efficiency.","href":"https://www.biddingstack.com/","icon":"StarIcon"},{"name":"Ads.txt Manager","description":"Effortlessly manage ads.txt with our tool designed for publishers and agencies, providing both management and insightful analytics.","href":"https://www.adstxt.dev","icon":"PaperAirplaneIcon"}]},{"name":"Insights","href":"/blog"}],"mobileMenu":[{"name":"Publisher Strategies","href":"/solutions/publisher","icon":"NewspaperIcon","iconCls":"bg-tblueb"},{"name":"Analytics & Insight","href":"https://www.pubperf.com/","icon":"PresentationChartBarIcon","iconCls":"bg-tblueb"},{"name":"Audience Management","href":"https://www.unisignin.com/","icon":"UserGroupIcon","iconCls":"bg-tblueb"},{"name":"Web & API Security","href":"/security","icon":"ShieldCheckIcon","iconCls":"bg-tblueb"},{"name":"Regulation Compliance","href":"https://www.uniconsent.com/","icon":"ViewGridIcon","iconCls":"bg-tblueb"},{"name":"Insights","href":"/blog","icon":"DocumentTextIcon","iconCls":"bg-tblueb"}],"loginHref":"","showLoginBtn":false,"contactLink":{"name":"Contact","href":"/contact"},"rightLinks":null,"bottomMobileLinks":[{"variant":"white","name":"Contact","href":"https://www.transfon.com/contact","className":"!rounded-full !my-2.5"}],"heroTitle":"Privacy first Technology-as-a-Service platform for publishers and marketers","heroDesc":"Data Privacy and Security, Performance and User Experience, Regulation Compliance, User and Revenue Growth","heroVariant":"blue","showHeaderBar":false},"docNav":{"meta":{"order":[{"id":"security","name":"Transfon Security","description":"Transfon Security Docs","image":"/img/docs/img.png","open":true,"pages":[{"href":"/docs/security/introduction","display":"Introduction","open":false},{"href":"/docs/security/dashboard-overview","display":"Dashboard Overview","open":false},{"href":"/docs/security/managing-organizations","display":"Managing Organizations","open":false},{"href":"/docs/security/managing-projects","display":"Managing Projects","open":false},{"href":"/docs/security/traffic-analytics","display":"Traffic Analytics","open":false},{"href":"/docs/security/http-events","display":"HTTP Events","open":false},{"href":"/docs/security/user-profiles","display":"User Profiles & Custom Data","open":false},{"href":"/docs/security/decision-rules","display":"Decision Rules","open":false},{"href":"/docs/security/block-allow-rules","display":"Block & Allow Rules","open":false},{"href":"/docs/security/how-to-protect-service-api","display":"How to Protect Your Service API","open":false},{"href":"/docs/security/how-to-filter-ivt","display":"How to Filter Invalid Traffic (IVT)","open":false},{"href":"/docs/security/how-to-protect-ad-budget-with-waf360","display":"How to Protect Your Ad Budget","open":false},{"href":"/docs/security/how-to-filter-bots-in-ga4","display":"How to Filter Bots in GA4 via GTM","open":false},{"href":"/docs/security/http-api","display":"HTTP API","open":false},{"href":"/docs/security/js-api","display":"JavaScript API","open":false},{"href":"/docs/security/account-security","display":"Account & Security Settings","open":false},{"href":"/docs/security/billing-and-plans","display":"Billing & Plans","open":false},{"href":"/docs/security/sso-saml-setup","display":"SSO / SAML Setup","open":false}]},{"id":"studio","name":"Transfon Studio","description":"Transfon Studio Docs","image":"/img/docs/img.png","open":true,"pages":[{"href":"/docs/studio/
3organization-management","display":"Organization Management","open":false},{"href":"/docs/studio/project-management","display":"Project Configuration","open":false},{"href":"/docs/studio/content-management","display":"Content Management","open":false},{"href":"/docs/studio/import-contents","display":"Import Contents","open":false},{"href":"/docs/studio/media-management","display":"Media Content Management","open":false},{"href":"/docs/studio/player-styles","display":"Controlling Player Styles","open":false},{"href":"/docs/studio/email-social-sync","display":"Email & Social Sync","open":false},{"href":"/docs/studio/connect-integrations","display":"Connect Integrations","open":false},{"href":"/docs/studio/account-billing","display":"Account & Billing","open":false}]}]}}}; 4 </script>
4<script defer="" src="/dist/vendor.js?v=2023121201"></script>
4<script defer="" src="/dist/bundle.a10a3695.js"></script>
4<script defer="" src="/dist/cards-slider.f72e41c1.js"></script>
4<script src="https://cmp.uniconsent.com/v2/cmp.js" data-license="85d3b86a3e"></script>
4<script> 5!function(f,b,e,v,n,t,s) 6{if(f.fbq)return;n=f.fbq=function(){n.callMethod? 7n.callMethod.apply(n,arguments):n.queue.push(arguments)}; 8if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0'; 9n.queue=[];t=b.createElement(e);t.async=!0; 10t.src=v;s=b.getElementsByTagName(e)[0]; 11s.parentNode.insertBefore(t,s)}(window, document,'script', 12'https://connect.facebook.net/en_US/fbevents.js'); 13fbq('consent', 'revoke'); 14fbq('init', '1395133968785992'); 15fbq('track', 'PageView'); 16</script>
16<script async="" src="https://cmp.uniconsent.com/v2/meta-consent.min.js"></script>
16<script id="waf360-tag" src="https://tag.waf360.com/tag/tag.js" license="a947d45d6b" defer="" async=""></script>
16<script id="gendiscover-tag" src="https://tag.gendiscover.com/chat/tag.js" data-license="3bad360de5" defer="" async=""></script>
vendor: 66 bytes, line 16
16<script async="" src="https://www.googletagmanager.com/gtag/js?id=
16G-BHCZETW0V6
vendor: 11 bytes, line 16
16"></script>
16<script> 17
vendor: 152 bytes, lines 17-21
17window.dataLayer = window.dataLayer || []; 18 function gtag(){dataLayer.push(arguments);} 19 gtag('js', new Date()); 20 21 gtag('config', '
21G-BHCZETW0V6
vendor: 16 bytes, lines 21-22
21'); 22
22</script>
22<script type="text/unicscript" unic-purpose-id="1"> 23 window.dataLayer = window.dataLayer || []; 24 function gtag() { dataLayer.push(arguments) }; 25 gtag('js', new Date()); 26 gtag('config', 'UA-106994550-1'); 27 </script>
27<script>
vendor: 442 bytes, lines 27-41
27 28(function(w, d, s, l, i) { 29 w[l] = w[l] || []; 30 w[l].push({ 31 'gtm.start': new Date().getTime(), 32 event: 'gtm.js' 33 }); 34 var f = d.getElementsByTagName(s)[0], 35 j = d.createElement(s), 36 dl = l != 'dataLayer' ? '&l=' + l : ''; 37 j.async = true; 38 j.src = 39 'https://www.googletagmanager.com/gtm.js?id=' + i + dl; 40 f.parentNode.insertBefore(j, f); 41})(window, document, 'script', 'dataLayer', '
41GTM-WR9B52R
vendor: 4 bytes, line 41
41');
42</script>
42<script async="" src="//instant.page/5.1.0" type="module" integrity="sha384-by67kQnR+pyfy8yWP4kPO12fHKRLHZPfEsiSXR8u2IKcTdxD805MGUXBzVPnkLHw"></script>
42<script> 43(function () { 44 var SELECTOR = 'form[data-lead-form]'; 45 46 function renderWidgets() { 47 if (!window.turnstile) return; 48 var containers = document.querySelectorAll('.cf-turnstile'); 49 Array.prototype.forEach.call(containers, function (el) { 50 if (el.childElementCount > 0) return; 51 try { 52 window.turnstile.render(el, { 53 sitekey: el.getAttribute('data-sitekey'), 54 appearance: el.getAttribute('data-appearance') || 'always', 55 size: el.getAttribute('data-size') || 'flexible', 56 theme: el.getAttribute('data-theme') || 'light' 57 }); 58 } catch (err) {} 59 }); 60 } 61 62 var scheduled = false; 63 function scheduleRender() { 64 if (scheduled) return; 65 scheduled = true; 66 setTimeout(function () { scheduled = false; renderWidgets(); }, 50); 67 } 68 69 // Render after window load so React hydration (where present) is usually 70 // done; the container is hydration-opaque anyway, and the observer catches 71 // containers re-created afterwards. 72 window.__tfTurnstileReady = function () { 73 function start() { 74 renderWidgets(); 75 if (window.MutationObserver) { 76 new MutationObserver(scheduleRender).observe(document.body, { childList: true, subtree: true }); 77 } 78 } 79 if (document.readyState === 'complete') setTimeout(start, 0); 80 else window.addEventListener('load', function () { setTimeout(start, 0); }); 81 }; 82 83 // UniSignin visitor id, set by the unisignin tag on each site. 84 function readCookie(name) { 85 var parts = document.cookie.split(';'); 86 for (var i = 0; i < parts.length; i++) { 87 var part = parts[i].trim(); 88 if (part.indexOf(name + '=') === 0) { 89 try { return decodeURIComponent(part.slice(name.length + 1)); } catch (err) { return ''; } 90 } 91 } 92 return ''; 93 } 94 95 function setStatus(form, msg, isError) { 96 var status = form.querySelector('[data-lead-status]'); 97 if (!status) return; 98 status.textContent = msg || ''; 99 status.classList.toggle('text-rose-600', !!isError); 100 status.classList.toggle('text-emerald-600', !isError && !!msg); 101 } 102 103 document.addEventListener('submit', function (e) { 104 var form = e.target; 105 if (!form || !form.matches || !form.matches(SELECTOR)) return; 106 e.preventDefault(); 107 108 var button = form.querySelector('button[type="submit"]'); 109 var widget = form.querySelector('.cf-turnstile'); 110 var pageInput = form.querySelector('input[name="page"]'); 111 if (pageInput && !pageInput.value) pageInput.value = window.location.href; 112 113 var data = new FormData(form); 114 var uid = readCookie('__unis_uid'); 115 if (uid) data.set('uid', uid); 116 if (!data.get('cf-turnstile-response') && window.turnstile && widget) { 117 try { data.set('cf-turnstile-response', window.turnstile.getResponse(widget) || ''); } catch (err) {} 118 } 119 if (!data.get('cf-turnstile-response')) { 120 setStatus(form, 'Please wait a moment for the spam check, then try again.', true); 121 return; 122 } 123 124 setStatus(form, 'Sending...'); 125 if (button) button.disabled = true; 126 fetch(form.getAttribute('action'), { method: 'POST', body: data }) 127 .then(function (res) { return res.json().catch(function () { return { ok: false }; }); }) 128 .then(function (res) { 129 if (res && res.ok) { 130 form.reset(); 131 setStatus(form, form.getAttribute('data-success') || 'Thanks, we will be in touch shortly.'); 132 } else { 133 setStatus(form, (res && res.error) || 'Something went wrong. Please try again.', true); 134 } 135 }) 136 .catch(function () { setStatus(form, 'Network error. Please try again.', true); }) 137 .then(function () { 138 if (button) button.disabled = false; 139 if (window.turnstile && widget) { try { window.turnstile.reset(widget); } catch (err) {} } 140 }); 141 }); 142})(); 143</script>
143<script src="https://challenges.cloudflare.com/turnstile/v0/api.js?render=explicit&onload=__tfTurnstileReady" async="" defer=""></script>
143<script id="unisignin-tag" data-license="708d69bd9a" data-domain="secure.signinservice.com" src="https://secure.signinservice.com/tag/v2/tag.js" async=""></script>
143<script type="module" src="https://static.cloudflareinsights.com/beacon.min.js/v4bc70e2c01a94c73b74392e4234840661791215815920" integrity="sha512-L0ha0OXavK/8okipN9F8BtP84dg9DUhPERbBXzwI6dgTA55d2+yweo3pn5CSFYs45/r8md2+xvUPtTdvTNRfjA==" data-cf-beacon='{"version":"2024.11.0","token":"d18cb9c4f40e4bc6a141b7ad8803eb40","r":1,"spa":2}' crossorigin="anonymous"></script>
143 144</body></html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.