Ad Units Overview¶
Last updated: July 2025
Role: Administrator & General
Ponta Ad Units are the core building blocks you embed on any third-party site to:
- Validate each visitor is human (via nCAPTCHA āChallengesā)
- Render interactive content (Polls, Comments, Ratings)
- Serve ads (Google Ad Manager)
Ad Units always run on one or more validated Sites, ensuring that only your approved domains can deliver revenue-generating widgets and human-verification flows.
ā”ļø Learn how to manage Sites in Sites Overview.
1. Embedding Ad Units on Third-Party Sites¶
- You generate a small JavaScript embed snippet when you create an Ad Unit.
- Paste that snippet into the
<head>or before</body>of any page on your validated domain. - At runtime, Ponta checks the pageās origin against your Site list, then loads:
- The Widget (front-end UI if chosen)
- The Challenge (real human-verification engine)
- The Ad slot (if GAM or custom ads are enabled)
2. Ad Unit Composition¶
What makes up an Ad Unit?
An Ad Unit = Widget (optional) + Challenge + Ad Integration (optional)
| Component | Purpose |
|---|---|
| Widget | Visible UI element: Poll, Comment, or Rating |
| Challenge | nCAPTCHA engine (9Choice or TypeMe) ensuring human traffic |
| Ads | Optional GAM or custom ad tags rendered alongside widget |
3. Standalone Challenges¶
What is a Challenge-Only Unit?
- You can create Challenge-only units without a Widget.
-
Ideal for gating:
- free downloads
- form submissions
- access to content (paywall-like flows)
-
It behaves like a lightweight Ad Unit:
- Embed the snippet
- Challenge runs
- Then: redirect, unlock content, or serve an ad
4. Ad Unit Types & Purposes¶
Poll Unit
- Widget: multiple-choice question
- Challenge: 9Choice (with ad serving)
- Purpose: gather audience opinions + earn ad revenue per vote
Comment Unit
- Widget: text-entry comment box
- Challenge: 9Choice
- Purpose: collect feedback/discussion, block bots, monetize impressions
Rating Unit
- Widget: star (1ā5) or thumbs-up/down rating
- Challenge: TypeMe (lightweight) or 9Choice (with ad)
- Purpose: quick feedback + optional ad display
Challenge-Only Unit
- Widget: none (invisible)
- Challenge: 9Choice or TypeMe
- Purpose: human-verify traffic or show ad before granting access
5. Linking Ad Units to Sites¶
- Site Selection is mandatory when you create or edit an Ad Unit.
- Ponta rejects or āfails safeā any embed on a domain not on that Ad Unitās Allowed Sites list.
- This linkage guarantees:
- Security: no unauthorized domains can earn revenue or bypass nCAPTCHA.
- Accurate billing & reporting: impressions and challenges are tracked per Site.
ā”ļø See Sites Overview for validation instructions.
6. Importance of Proper Configuration¶
- Validation: Always verify each Site before embeddingāwidgets and ads wonāt run otherwise.
- Targeting: Ensure consistent use of domain/path across Ad Unit and Site configurations.
- Consistency: Mismatched setup will result in failed loads or blocked embeds.
7. Developer Examples¶
This section provides ready-to-use code snippets for embedding Ponta Ad Units.
We recommend starting with the Poll Widget example, as it is the simplest integration.
7.1 Poll Widget Example¶
The Poll widget includes both the interactive poll and the integrated nCAPTCHA 9Choice challenge.
Simply place the following snippet where you want the poll to appear.
Example: Embed Poll Widget
<!-- Poll widget should be embedded right here -->
<div class="poll-widget-container" data-container-id="poll-404d930d-1"></div>
<!-- Load the orchestrator embed script -->
<script
src="https://storage.googleapis.com/ponta-widgets-stage/latest/ponta-widget.js"
type="module"
data-widget="poll"
data-adunit-key="404d930d-349f-43a5-93fe-6442b1cc86de"
data-container-id="poll-404d930d-1"
data-gtm="None">
</script>
Notes & Best Practices¶
- Ensure that the
data-adunit-keymatches your Poll Ad Unit key in the Ponta dashboard. - The
data-container-idmust match both the<div>container and the<script>attributes. - Place the
<script>tag just before the closing</body>tag for best performance.
7.2 9Choice Standalone Example¶
The 9Choice Standalone challenge is designed to verify users before they submit a form or click a button.
Use this when you need human verification without a poll or comment widget.
Example: Embed 9Choice Standalone
<!-- Embed the 9Choice Widget -->
<ninechoice-widget
id="form-verify"
data-adunit-key="8d22f88f-b494-4d1c-808c-9e9312a9836c"
data-intercept-id="newsletter-form"
></ninechoice-widget>
<!-- Load the 9Choice script -->
<script
type="module"
src="https://storage.googleapis.com/ponta-widgets-stage/latest/ninechoice-widget.iife.js"
></script>
Linking to a Button¶
Example: Linking 9Choice to a Button
<ninechoice-widget
data-adunit-key="8d22f88f-b494-4d1c-808c-9e9312a9836c"
data-intercept-button-id="download-btn"
></ninechoice-widget>
<button id="download-btn">Download PDF</button>
Notes & Best Practices¶
- Place the
<script>tag after your form or button markup, ideally before the closing</body>tag. - Ensure that the
data-adunit-keymatches the Ad Unit from your Ponta dashboard. - Use the Actions ā Code button (in the Ad Units list) to copy the correct embed snippet for each unit.
7.3 Troubleshooting¶
Common Issues and Solutions
- Widget not rendering: Ensure that your domain is validated in the Sites section and that the
data-container-idmatches between<div>and<script>. - 9Choice challenge not triggering: Verify that the
data-intercept-idordata-intercept-button-idmatches the form or buttonid. - Console errors: Check your browser console for JavaScript errors and confirm the correct
data-adunit-keyis used from your Ponta dashboard. - Slow load times: Place the
<script>tags before the closing</body>tag to improve performance.
š£ Getting Started Checklist¶
- Validate your domain in the Sites section
- ā Create an Ad Unit (Poll, Comment, Rating, or Challenge-only)
- š Link it to one or more validated Sites
- š§© Copy and paste the JavaScript embed snippet into your site
- š (Optional) Configure GTM tracking for event-level analytics
- š Monitor performance from the Ponta Dashboard
By understanding Ad Units as combined widgets, challenges, and ad slotsāand by correctly linking them to validated Sitesāyou unlock Pontaās full power: engaging, secure, and monetizable experiences across all your web properties.