Back to all articles

How to price ad inventory in a conversational AI app

Learn how to price ad inventory in a conversational AI app in 2026 — set floors by intent, choose CPM vs CPA, and use mediation to lift RPM.

ELContent TeamAug 8, 2026 — 8 min read
How to price ad inventory in a conversational AI app

Pricing ad inventory in a conversational AI app is not the same exercise as pricing a banner slot on a blog. You're pricing a turn, a session, or an intent — not a fixed rectangle — and the same chat surface can be worth $2 CPM in one context and $40 CPM in another. Here's how to set floors, pick pricing models, and adjust them without killing fill rate.

TL;DR
  • Price ad inventory in a conversational AI app by placement type, not by session — turn-level and summary-card slots carry different value.
  • Set floor CPMs by intent cluster first; contextual finance or travel intents clear $15-$30 CPM in 2026, generic chit-chat clears $2-$5.
  • Run CPM and CPA side by side through mediation before locking a single model — Elo's SDK supports both without a second integration.
  • Recheck floors monthly against fill rate, not quarterly — chat volume and advertiser demand shift faster than display inventory ever did.

Why this matters

Most indie developers and small teams price conversational ad inventory the way they'd price a newsletter slot: one flat CPM, set once, forgotten. That leaves money on the table in high-intent moments and kills fill rate in low-intent ones.

A chatbot that answers "best noise-canceling headphones under $200" carries more advertiser value per impression than one answering "what's the weather." Pricing that ignores this difference either overcharges advertisers on low-intent inventory (they stop bidding) or undercharges on high-intent inventory (you leave revenue on the table). Getting how to price ad inventory in a conversational AI app right in 2026 means pricing by context, not by screen.

What you'll need

  • An ad SDK that supports contextual matching, not just keyword insertion — Elo reads conversation context to serve native cards instead of banners
  • At least 2-4 weeks of chat volume data to segment intent clusters (shopping, support, travel, finance, entertainment)
  • A mediation setup or direct-demand relationships so you have more than one buyer competing for the same slot
  • A tracking layer for fill rate, RPM, and CPM by placement — dashboard or event log, doesn't matter which
  • Time: 3-5 hours to set initial floors, then 30-60 minutes a month to review and adjust

The steps

1. Map your inventory types before you price anything

Don't price "the chatbot." Price the placements inside it. A conversational app typically has 3-4 distinct ad-eligible moments: mid-conversation native cards, end-of-session summary cards, follow-up suggestion chips, and sometimes voice-read sponsored answers. Each carries different attention and different advertiser willingness to pay.

Group your last 30 days of conversations by these placement types and tag each with a rough intent category. This mapping is the input for every pricing decision that follows — skip it and you're guessing.

Common mistake: treating every ad slot in the chat as interchangeable inventory. A summary-card impression at the end of a resolved support ticket is worth more than a mid-scroll suggestion chip in an open-ended chat.

2. Set a floor CPM per intent cluster, not per app

Contextual, non-banner ad formats in chat apps generally clear higher than legacy display: expect $15-$30 CPM for high-intent clusters like travel booking, personal finance, or B2B software research, versus $2-$5 CPM for open-ended or entertainment chat in 2026. Set your floor at roughly 70-80% of what you'd expect the winning bid to be — floors set too close to the ceiling choke fill rate.

Write the floor down per cluster in a simple table. You'll revise it in step 6, but you need a starting number now.

3. Choose CPM, CPC, or CPA per placement, not globally

CPM works for summary cards and passive impressions where the advertiser is buying attention, not action. CPC and CPA fit intent-driven placements — a travel-planning assistant surfacing a booking link converts better on CPC or CPA because the advertiser only pays when the user acts.

Running a single pricing model across the whole app under-monetizes one side or the other. Elo's ad mediation setup lets you run CPM and CPA demand through the same integration, so you're not choosing once and living with it for a year.

4. Layer in mediation to create price competition

A single ad network sets your price for you — whatever they're willing to pay is your ceiling. Mediation across 2-3 networks or direct demand sources forces real-time competition, and the winning bid becomes your effective price rather than a fixed rate card.

Expected outcome: RPM increases even when CPM per network stays flat, because the auction now picks the highest bidder per impression instead of a single fixed buyer.

5. Segment pricing by explicit user intent signals

Users who ask "compare X vs Y" or "where can I buy" are further down funnel than users asking open questions. Price these moments 2-3x higher than passive Q&A turns. This is where contextual matching earns its keep — a generic "insert an ad every 5 messages" rule prices a comparison question the same as small talk, and that's the fastest way to underprice your best inventory.

6. A/B test floor prices against fill rate, not against gut feel

Raise the floor on one intent cluster by 15-20% and hold everything else steady for two weeks. Watch fill rate and RPM together — if fill rate drops more than RPM rises, the floor overshot. A/B testing conversational ads inside the chat flow is the only reliable way to find the ceiling per cluster instead of guessing at it.

Common mistake: testing floor changes across the whole app at once. You won't know which cluster moved the needle.

7. Monitor RPM monthly and re-cut clusters as volume shifts

Seasonal shifts in chat topics — tax season, holiday shopping, back-to-school — move intent-cluster volume enough to justify monthly floor reviews. Tracking ad revenue per user gives you the metric that actually reflects pricing health, since raw CPM can look fine while RPM quietly drops because fill rate collapsed.

A floor set too close to the ceiling doesn't earn more, it just kills fill rate.

Troubleshooting

  • Fill rate under 40% on a high floor: the floor is above what demand will pay for that cluster. Drop it 10% and retest for a week before touching anything else.
  • High fill rate but flat RPM: you're winning every auction at the floor price, meaning the floor is too low and you're leaving bid headroom on the table. Raise it in 10% increments.
  • CPA campaigns underperforming versus CPM on the same placement: the placement's user intent may not match the advertiser's conversion goal — move that advertiser to a different intent cluster instead of the same slot.
  • Revenue drops after a model update or UI change: conversation length or turn structure likely shifted, which changes where ad-eligible moments land. Re-run the inventory mapping from step 1.
  • One network consistently outbids the rest: that's a signal your mediation setup has too few real bidders in that cluster. Add demand sources before assuming the floor is wrong.

Tools and resources

  • Contextual ad matching and native card rendering, not banner insertion — this is the core requirement for pricing by intent at all
  • Mediation across multiple demand sources to create real auction competition instead of a fixed rate card
  • A/B testing on floor price changes, isolated by intent cluster
  • RPM and fill-rate tracking by placement type, reviewed monthly rather than quarterly

See real floor prices in action

Browse the Elo Ad Library for live CPM and format examples across categories.

What to do next

Pricing is one piece of monetizing a chatbot. If you haven't set up the ad layer itself yet, start with how to monetize an AI chatbot with conversational ads before fine-tuning floors — pricing decisions only matter once inventory is actually being served.

FAQ

What's the best way to price ad inventory in a conversational AI app?

Price by intent cluster and placement type, not by app-wide flat rate. High-intent clusters like travel or finance clear $15-$30 CPM in 2026, while open-ended chat clears $2-$5 CPM, so a single flat rate always underprices one side.

Is CPM or CPA better for chatbot ad inventory?

CPM fits passive placements like summary cards, CPA fits intent-driven placements like booking or comparison moments. Running both through mediation, rather than picking one globally, captures more revenue across the app.

How much does contextual ad inventory in a chat app cost advertisers?

Contextual, non-banner formats in chat apps typically clear $15-$30 CPM for high-intent categories and $2-$5 CPM for low-intent chat in 2026. Actual clearing price depends on the number of demand sources bidding through mediation.

How often should I adjust ad pricing floors in a chatbot?

Review floors monthly, not quarterly. Chat topic volume shifts with seasonality faster than display inventory does, and a floor that worked in Q1 2026 can choke fill rate by Q3.

Does ad mediation actually increase revenue in a conversational AI app?

Yes, because mediation forces multiple demand sources to compete for the same impression instead of one network setting a fixed price. RPM typically rises even when the average CPM per individual network stays flat.

Can I test different ad prices without hurting user experience?

Yes, run floor price changes as isolated A/B tests on one intent cluster at a time and watch fill rate alongside RPM. Testing the whole app at once hides which cluster moved the number.

What's a good fill rate for chatbot ad inventory?

Fill rate below 40% on a given intent cluster usually signals the floor is set above what current demand will pay. There's no universal target number since it varies by cluster and advertiser density, but a sudden drop from a prior baseline is the signal to act on.

Should every ad placement in a chatbot use the same pricing model?

No, mixing CPM for passive summary cards and CPC or CPA for intent-driven placements captures more value than one model applied everywhere. This requires an SDK that supports multiple pricing models on the same integration.

One last thing

The biggest pricing mistake in 2026 isn't setting the wrong number — it's setting one number for the whole app and never touching it again. Chat volume shifts by intent cluster every month; a floor that cleared fine in January can choke fill rate by June if a cluster's demand dried up and nobody rechecked it.

Quick comparison

PlacementTypical modelFloor range (2026)Review cadence
Mid-conversation native cardCPM$8-$18Monthly
End-of-session summary cardCPM$15-$30 (high intent)Monthly
Follow-up suggestion chipCPCBid-basedBi-weekly
Booking/purchase intent cardCPABid-basedWeekly

You might also like