Skip to content

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:

  1. Validate each visitor is human (via nCAPTCHA ā€œChallengesā€)
  2. Render interactive content (Polls, Comments, Ratings)
  3. 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-key matches your Poll Ad Unit key in the Ponta dashboard.
  • The data-container-id must 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-key matches 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-id matches between <div> and <script>.
  • 9Choice challenge not triggering: Verify that the data-intercept-id or data-intercept-button-id matches the form or button id.
  • Console errors: Check your browser console for JavaScript errors and confirm the correct data-adunit-key is used from your Ponta dashboard.
  • Slow load times: Place the <script> tags before the closing </body> tag to improve performance.

šŸ‘£ Getting Started Checklist

  1. Validate your domain in the Sites section
  2. āž• Create an Ad Unit (Poll, Comment, Rating, or Challenge-only)
  3. šŸ”— Link it to one or more validated Sites
  4. 🧩 Copy and paste the JavaScript embed snippet into your site
  5. šŸ“Š (Optional) Configure GTM tracking for event-level analytics
  6. šŸ“ˆ 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.