Price text is the pricing string shown on a ChatGPT sponsored ad, set through the OpenAI Ads API creative.price field as either a fixed value you type or a {{product.price}} token pulled from your product feed. It shows the displayed price label on the ad card and differs from bid, budget, and the underlying catalog price that powers checkout.
Because shoppers in ChatGPT scan price before they click, the number you show decides whether your ad earns the tap or gets skipped. Set it wrong and you pay for impressions on a card that misleads buyers, drawing clicks that bounce or triggering a review rejection that pulls the ad entirely.
In the OpenAI Ads API, price text is the creative-level value that renders a product's price on a sponsored card inside a ChatGPT answer. You set it on the creative.price field when you create or update an ad, and it sits alongside the title and body that make up the card.
Price text takes one of two forms. For a chat card, you type a static string such as a currency amount or an offer line, and ChatGPT shows what you entered. For a product-ad template, you pass the {{product.price}} token, and OpenAI fills the price from the selected feed item at serve time. The field is optional and governed by OpenAI's ad policies, so a misleading or malformed price can push the whole ad into a rejected review status.
Price text is one part of the ad creative, separate from targeting signals like context hints and from the bid and budget that control delivery. For feed-driven ads, it depends on the price in your product feed staying accurate. AirOps helps teams keep the feed values and ad copy that drive price text consistent as catalogs and offers change.
Resources: see how to structure ChatGPT ad creative, specs, and policy-safe copy.
Price text reaches a shopper through a short pipeline that runs from your ad setup to the rendered card. Here is the order it follows.
Choose a format: Decide whether the ad is a chat card with a typed price or a product-ad template that reads from your feed.
Set the field: Pass creative.price in the OpenAI Ads API, using a static string for a chat card or the {{product.price}} token for a template.
Resolve the value: At serve time, OpenAI keeps your typed string as is or pulls the live price from the selected feed item for a template.
Pass policy review: OpenAI checks the price against its ad policies and assigns a review status of in review, approved, or rejected.
Render on the card: ChatGPT shows the approved price text on the sponsored card alongside the title, body, and image.
The rendered price text tells you the exact number a shopper sees before they click. It does not tell you what they pay at checkout, since the final price comes from your site or your feed's checkout data.
Price text is the first number a shopper reads on your ChatGPT ad, and it frames the buying decision before they reach your site. A sharp, accurate price pulls qualified clicks; a vague or wrong one wastes spend and erodes trust.
It drives the click decision: Shoppers compare the price on your card against the alternatives ChatGPT surfaces, so the value you show directly shapes whether you win the tap you already paid to serve.
It protects your ad from rejection: A price that is misleading, malformed, or out of sync with your landing page can fail OpenAI's policy review, and a rejected ad stops delivering until you fix and resubmit it.
It sets post-click expectations: When the price text matches what the shopper finds at checkout, bounce stays low and conversion holds; a mismatch sends paid clicks to a page that contradicts the ad.
SEO managers use price text to keep the price shown on a ChatGPT ad in sync with the live product page it links to.
Growth marketers use price text to test whether a plain amount or an offer-style line wins more clicks on the sponsored card.
Demand gen leads use price text to make sure feed-driven product ads display current pricing across every campaign they run in ChatGPT.
A chat card uses a fixed price string that you type and OpenAI displays verbatim, while a product-ad template uses the {{product.price}} token that OpenAI resolves from the selected feed item at serve time, so the two formats behave differently.
For template-driven ads, the price a shopper sees is only as current as the price field in your product feed, so a stale or delayed feed surfaces as a wrong ad price and can undercut both trust and policy compliance.
OpenAI reviews every ad against its published ad policies, and a price that is deceptive, malformed, or inconsistent with the landing page can draw a rejected review status that blocks the ad from serving until you correct it.
Show shoppers a clear price on your ChatGPT sponsored card before they click.
Match the displayed price to your product feed for feed-driven ads.
Reduce wasted spend by setting the number that qualifies clicks upfront.
Lower post-click bounce by keeping the ad price consistent with checkout.
Avoid policy rejections that pull a non-compliant ad out of delivery.
Test price wording on ChatGPT cards to learn what phrasing earns more taps.
Write the price as a clean, complete value so shoppers read it at a glance and trust the card.
Match the price text to the exact amount on your landing page, because a mismatch drives bounces and risks policy review.
Use the {{product.price}} token for catalog ads so the displayed price tracks your feed instead of drifting out of date.
Keep your product feed price field current, since template ads inherit whatever value the feed holds at serve time.
Read OpenAI's ad policies before launch so your price framing clears review the first time.
Preview the ad before activating it to confirm the price renders the way you intended on the card.
Avoid treating price text as throwaway copy you set once and forget. Competent teams often launch a template ad and let the feed price go stale, so the card shows an old number for weeks; schedule a feed check and re-preview whenever your pricing or offers change.
AirOps: AirOps keeps the product-feed prices and ad copy that drive your price text consistent as catalogs and offers change across campaigns.
OpenAI Ads Manager: OpenAI's own ads platform is where you set the creative.price field, preview the rendered card, and check the review status of each ad.
Google Merchant Center: Google's feed tool helps you maintain accurate, structured product prices that you can mirror into the feed powering ChatGPT product ads.
Audit your prices: Pull the current price for each product you plan to advertise and confirm it matches your live landing pages. You can do this this week with your existing feed and site.
Pick your ad format: Decide which products run as chat cards with typed price text and which run as product-ad templates driven by your feed. This choice decides whether you control the exact text or let the feed fill it.
Set the price field: Enter a static string on creative.price for chat cards, or add the {{product.price}} token for template ads. Keep the string short and clear so it renders cleanly.
Preview and submit: Preview each ad to see how the price renders on the card, then submit it for OpenAI's policy review.
Monitor and refresh: Watch review status and click behavior, and update the price text or feed value whenever pricing or offers change.
Price text is the price string shown on a ChatGPT sponsored ad, set through the OpenAI Ads API.
You set it as a typed value for a chat card or as the {{product.price}} token for a feed-driven product ad.
For template ads, the displayed price is constrained by whatever your product feed holds at serve time.
A deceptive or mismatched price risks a rejected policy review that stops the ad from delivering.
The leverage sits in matching the shown price to your live page and keeping the feed current.
Price text is the price a shopper sees on your ad, while the bid and budget are the money controls that decide how often and how competitively that ad is shown. Price text lives on the creative, next to the title, body, and image, and its job is to communicate value at the moment of the decision. Your bid tells OpenAI how much you will pay for an impression or a click, and your budget caps total spend over a period. The two do different jobs: price text influences whether a shopper wants to click, and bidding influences whether your ad appears at all. You can run the same bid and budget while testing very different price wording, and you can hold the price steady while adjusting spend. Treat them as separate levers, because fixing a weak price will not rescue an underfunded campaign, and raising the bid will not fix a price that drives people away.
Update your price text whenever the underlying price changes. A fixed calendar matters less than staying in sync with your real pricing. For chat cards with a typed price, that means editing the creative any time you change the amount, run a promotion, or end an offer. For product-ad templates, you rarely touch the ad itself, because the {{product.price}} token reads from your feed; instead you keep the feed price current and let it flow through. The practical cadence depends on how volatile your pricing is: a catalog with daily price moves needs a feed that refreshes at least as often, while a stable subscription price may sit unchanged for months. The one firm rule is that the price on the card should never lag the price on your landing page, because that gap is what triggers bounces and policy flags. Build a habit of re-previewing the ad after any pricing or feed change.
The price text on your ad can differ from your site when the value feeding the ad is out of date or set independently from your live pricing. For a chat card, you typed the price by hand, so it stays frozen at whatever you entered until you edit the creative; if your site price moved while the card stayed fixed, the two drift apart. For a product-ad template, the price comes from your feed through the {{product.price}} token, so any lag between your real price and your feed refresh shows up as a stale number on the card. Promotions are a common culprit, because a sale can start or end on your site hours before the feed or creative catches up. Currency formatting and rounding in the feed can also create small visible differences. The fix is always the same: tighten the link between your live price, your feed, and the ad so all three agree.
Yes, you control the price text directly, though the method depends on your ad format. For a chat card, you set the exact string on the creative.price field, and OpenAI shows what you typed, so you have word-for-word control over the displayed price. For a product-ad template, you control the price indirectly by controlling the feed: the {{product.price}} token pulls whatever your product feed reports, so editing the feed price changes the ad. Either way, your control stops at OpenAI's review. The platform checks every price against its ad policies, and a value it judges deceptive or non-compliant will not serve, regardless of what you entered. So the honest answer is that you set the price text, but OpenAI decides whether that version is allowed to run. The practical move is to keep the price accurate and consistent with your landing page, which is both what converts shoppers and what clears review without friction.
Good price text is accurate, current, and an exact match to the price a shopper finds when they land on your page. There is no single benchmark number, because what counts as good is measured by consistency and clarity more than by a target you can chart. Start with accuracy: the displayed value should equal your live price to the cent, including any active promotion. Add clarity: a clean amount reads faster than a cluttered string stuffed with extra words. Then check policy fit, since a price that clears OpenAI's review on the first submission is a sign your framing is sound. Operationally, a strong setup shows a stable approved review status, a click-through rate that holds or climbs, and a low bounce rate from the ad to the page. If shoppers click and then leave immediately, the price text may be promising something the page does not deliver, and that is the clearest signal it needs work.