Ad Campaigns

Want to monetize your stream with sponsor ads? My Pie lets you schedule ad banners directly in your overlay, automatically tracking every impression using real Twitch data. Send your sponsors a real report. No spreadsheets, no guesswork.

Important to know: My Pie isn't a sponsor marketplace. You still secure your own deals. Instead, we provide a reliable way to deliver on the deals you've made. Set up the ad, let us track every impression with verified Twitch data, and share a transparent report your sponsors can trust.

Full walkthrough: creating a campaign → setting up the ad folder → viewing analytics → sharing the report


How It Works #

The concept is simple: create a folder in your overlay, mark it as an "Ad Folder", and My Pie handles the rest.

  1. Create an Ad Folder in the studio editor and place your sponsor's banner inside it.
  2. Set a schedule: how often the ad should appear and how long it stays on screen.
  3. Stream as usual. Every time the ad appears, My Pie logs an impression and pulls your live Twitch stats (viewers, category, stream title).
  4. Share the report with your sponsor. They get a dashboard with all the data, no login required.

Setting Up Your First Campaign #

Step 1: Create an Ad Folder #

  1. Open your Studio Editor
  2. Click + Folder in the top toolbar
  3. Select the new folder in the Layers panel (double-click opens its settings)
  4. In the Ad Schedule section, turn on the Ad Folder toggle
  5. Give the folder a clear name, something like "BrandX Banner" — it becomes the campaign name

Ad folders need a connected Twitch account (Dashboard → Account) — impression verification is impossible without it, and the toggle will tell you so. A new campaign starts paused: publish first, then start it (step 3).

Ad Folder toggle in the Object Editor, before and after enabling Ad Schedule

Step 2: Pick a Mode #

With the Ad Folder toggle on, pick a Mode. Three options, each suited to a different sponsorship style:

Scheduled (timed slots)

The ad folder pops up at regular intervals and disappears after a set duration. Best for "20 seconds every 15 minutes" style placements. Two settings:

  • Show every (minutes): how often the ad fires (e.g., 12 minutes).
  • Duration (seconds): how long it stays visible per fire (e.g., 15 seconds).
  • Random offset (±60s): optional jitter so consecutive fires aren't perfectly clockwork. On by default.

Always On (continuous)

The banner stays on screen for the entire stream. My Pie samples a verified impression every 5 minutes so the report captures viewer-count changes throughout the broadcast. Best for "title sponsor" placements where the brand is always visible.

Rotate (cycle through banners)

Cycle through multiple banners inside the same folder, one at a time. Best when you have several sponsors and want to give each a fair share of screen time. Settings:

  • Show each for (seconds): how long every banner is visible per turn (e.g., 8s).
  • Gap between banners (seconds): optional pause where nothing is shown between turns. Set to 0 for back-to-back rotation; bump to 30 or 60 if you want viewer breathing room.
  • Intro / Outro animation: how each banner fades in and out as it swaps.

Hidden banners (eye toggle) are skipped automatically; the cycle continues from the next visible one. Hide a banner mid-stream to pause it without breaking the rotation.

Step 3: Add Your Sponsor's Content #

Place your sponsor's assets inside the Ad Folder: images, logos, animated WebMs, text overlays, or whatever else they need. Everything inside the folder will appear and disappear together based on the schedule.

Hit Publish — the campaign appears under Dashboard → Ads with a "Paused" status.

Start it when you're ready: flip "Campaign running" in the folder settings (or the play button on its layers row), then Publish again. The animated green highlight on the row means the campaign is live.

Ad folder with sponsor banner assets inside, schedule active

What Gets Tracked #

Every time the ad appears on your live stream, My Pie records:

  • Timestamp: Exactly when the ad was shown
  • Duration: How long it was visible
  • Viewer count: How many people were watching at that moment
  • Category: What you were streaming (e.g., "Valorant", "Just Chatting")
  • Stream title: Your stream title at the time

All of this is pulled directly from the Twitch API in real time.

Good to know: Impressions are only recorded when you're actually live. If OBS is open but you're not streaming, nothing gets logged.

Click Tracking (QR Codes) #

Why it matters for sponsors: Impressions show how many times an ad was displayed, but QR codes show how many viewers actually took action. Instead of just saying "your banner was displayed 500 times," you can tell a sponsor "47 viewers scanned the code and visited your page." This makes your ad packages significantly more valuable.

To set it up, simply add a QR Code element inside your Ad Folder alongside your banner image. Enter the sponsor's URL, the system handles everything else automatically.

A QR code inside an Ad Folder is a full campaign participant. In "scheduled" and "always on" modes it appears together with the banner, and in rotation it takes its own slot (a big "scan now" moment on its own). In the campaign's Sponsors section it gets its own row with its own report link: that report leads with scan counts, broken down by day and device.

QR Code element in the My Pie Studio editor, shows the QR code alongside a banner inside an Ad Folder

How it works

  • Shortlink Generation: Every QR code gets a unique shortlink (e.g., mypie.studio/r/aB3x9Z) that redirects to your sponsor's URL. The QR code on screen always points to this shortlink.
  • Click Analytics: We track total and unique clicks, device type (mobile, tablet, desktop), operating system, browser, and approximate locale.
  • Sponsor Report: All click data appears automatically in the public report alongside impressions. Sponsors see a complete picture: impressions, clicks, click-through rate, and device breakdown.
  • Spam Protection: Clicks are rate-limited to 1 per IP per minute. We use privacy-preserving hashes, raw IP addresses are never stored.

Using QR codes without Ad Campaigns

You don't need a sponsor to use QR codes. Place a QR Code element anywhere in your overlay, outside of Ad Folders, to share any link with viewers: your merch store, Discord invite, donation page, or social media. Analytics still work the same way; you can see scan stats in the Dashboard → QR Clicks section.


How Impressions Are Counted #

Each ad impression is recorded the moment a banner becomes visible on the overlay, with a Twitch viewer-count snapshot for verification. Counting differs slightly by mode:

  • Scheduled mode: When the folder fires, every visible banner inside is shown together. Each one counts as a separate impression with the same timestamp and viewer count.
  • Rotate mode: One banner is on screen at a time. Each appearance of a banner is its own impression. A banner that cycles 12 times in a stream has 12 impressions for that stream.
  • Always-on mode: The banner is continuously visible. Sample impressions are recorded every 5 minutes so the report captures viewer-count changes throughout the stream.

Network retries are de-duplicated server-side so the same display never counts twice.


Viewing Your Analytics #

Head to Dashboard → Ads to see all your campaigns. Click into any campaign to get the full picture:

  • Total impressions: How many times the ad was shown
  • Airtime: Total time your ad was on screen
  • Average & Peak Viewers: Viewer stats across all impressions
  • Ad Exposure: Total reach in viewer-minutes
  • Daily chart: Visual breakdown of impressions over time
  • Impression log: Every ad impression with full details
Ad Campaigns dashboard showing all campaigns with status, impressions, and airtime Campaign analytics, impressions, airtime, viewer stats, and daily chart Top categories breakdown and recent impressions log with viewer counts

If your campaign includes a QR code, you'll also see detailed scan data in Dashboard → QR Clicks or directly within the sponsor report. This includes:

  • Total & Unique Clicks: How many times the link was opened
  • Device Types: Desktop, mobile, or tablet breakdown
  • Browsers & OS: What software your viewers are using
  • Click Log: A timestamped history of every verified scan
QR click analytics showing total clicks, unique visitors, and device breakdown

Sharing Reports with Sponsors #

Every campaign gets a unique public link you can send to your sponsor. It lives in the Sponsors card right under the campaign header — the first row, “General link (all sponsors)”. They'll see a professional report page with:

  • Key metrics at the top
  • A daily impressions chart
  • The full impression log

No login, no sign-up, just send the link and they're in.

Only verified impressions appear in the report. Each impression is confirmed by the Twitch API with a real viewer count. If Twitch can't confirm you were live, the impression won't appear in the report. An impression is also only counted while the banner is actually rendered — an OBS scene that isn't live on the program output records nothing.

Estimated value (CPM). Set a CPM (in your own currency, per 1000 viewer-impressions) on the campaign page and the dashboard shows your private value estimate with the formula. Money never appears on sponsor reports: you quote the price — the platform provides the verified metrics.

CSV Export #

Need the raw data? Download everything as a CSV file. Columns include: timestamp, day of week, mode (Scheduled / Always On / Rotate), duration, interval, viewer count, verified flag, category, stream title, shown creatives, and time-into-stream. Perfect for invoices, custom reports, or auditing.

The download button is on the campaign detail page. There's also a separate Clicks CSV when QR codes are involved.

CSV export showing raw impression data in a spreadsheet
Tip: You can regenerate the share link anytime if you want to cut off a sponsor's access.

Per-Sponsor Share Links (Multi-Sponsor Folders) #

If you rotate banners from different sponsors in the same Ad Folder, the campaign-level share link would expose all of them to whoever you send it to. To solve this, every banner inside an Ad Folder also gets its own private share URL.

How it works

  1. Open the campaign detail page (Dashboard → Ads → your campaign).
  2. Open the Sponsors card right under the campaign header. Each banner in the folder is listed with a thumbnail, an editable sponsor name, a unique share URL, and that sponsor's own impression stats.
  3. Fill in the sponsor name (e.g., "Bean Brew Coffee Co.") so it appears as the heading on the public report.
  4. Copy each sponsor's URL and email it to the right contact.

What sponsors see

When a sponsor opens their per-sponsor URL (/reports/sponsor/<token>), the report is filtered to only their banner's impressions. They see:

  • Their banner thumbnail and sponsor name at the top, so they know it's their data, not someone else's.
  • Verified impressions, airtime, peak viewers, and Ad Exposure in viewer-minutes, all filtered to their banner only.
  • The recent impressions list and CSV download (also filtered).
  • Nothing about the other sponsors in the same folder.

If a URL leaks

Click New link on that sponsor's row. A fresh token is minted; the old URL stops working immediately. Email the new URL to the sponsor.

Single-sponsor folders

If your Ad Folder only ever contains banners from one sponsor, the campaign-level share link works fine. Sending the campaign URL is the same as the per-sponsor URL because there's only one sponsor in the data. The Sponsors card still shows that one sponsor, with their own URL if you'd rather use it.


Common Questions #

Can the data be faked?

No. Impressions are sent from your live overlay to My Pie's server, which independently verifies your stream status via the Twitch API. If you're not live, nothing gets recorded. Viewer count and category come straight from Twitch.

Can I run multiple campaigns at once?

Yes. Each Ad Folder becomes its own campaign with separate analytics and its own share link. Run as many as you want.

Does the ad need to cover the whole screen?

No. You can make the ad folder any size, a small logo in the corner, a banner at the bottom, or a full-screen takeover. Position and size it however you want in the studio editor.

How do I pause and resume a campaign?

Three equivalent ways — pick whichever is closest:

  • In the editor: the "Campaign running" switch in the folder settings, or the play/pause button on its layers row. A running campaign's row glows with an animated green highlight. Applies in OBS after you Publish.
  • The eye icon: hiding the folder pauses the campaign; unhiding resumes it automatically (only if hiding is what paused it — a deliberate pause is never overridden). Also applies after publishing.
  • From Dashboard → Ads: the Pause / Start buttons on the campaign page (and Start right in the list). These apply instantly, no publish needed.

To end a campaign for good and remove it from the active list, Archive it. Archives keep every stat and report, but stop accepting impressions. Archived by mistake? “Restore from archive” brings the campaign back as paused — numbers and sponsor links intact. Re-enabling the folder in the editor (without restoring) starts a fresh campaign with clean numbers instead.

What happens when the end date passes?

The campaign wraps itself up: impressions stop counting, the banner leaves the stream automatically (even without a publish), and the campaign archives. Want to keep going? Extend the end date on the campaign page before the deadline. Deadline already passed? Hit “Restore from archive”, extend the end date, and resume the campaign.