Skip to main content

I tested ChatGPT Ads in Morocco: $41.62 spent, 91 clicks, zero tracked conversions

8 min read

A hands-on ChatGPT Ads case study using a $25 daily budget in Morocco. See the campaign results, custom audience limit, Pixel setup, and measurement gap.

I tested ChatGPT Ads in Morocco: $41.62 spent, 91 clicks, zero tracked conversions

I opened OpenAI Ads Manager to test a small Morocco campaign for MarocEmploi. The first $41.62 bought 91 clicks. The more important result was what the dashboard could not tell me yet.

This is a hands-on ChatGPT Ads case study based on my own advertiser account. I used a Standard campaign with the Clicks objective, Morocco as the location, a $25 daily budget, an uploaded customer audience, and the OpenAI Pixel on MarocEmploi.net.

The early traffic numbers look promising: 2,937 impressions, 91 clicks, a 3.10% click-through rate, and a $0.46 average cost per click. The campaign also showed zero tracked conversions. That last number is not an ROI verdict, because the conversion setup was still unfinished and the Pixel was only confirming page views.

My ChatGPT Ads test results

MetricResultWhat it means
Spend$41.62About 1.66 times the selected daily budget
Impressions2,937Recorded ad views
Clicks91Recorded visits from the campaign
CTR3.10%91 clicks divided by 2,937 impressions
Average CPC$0.46$41.62 divided by 91 clicks, rounded
Average CPM$14.24The value shown in the campaign table
Tracked conversions0Not yet useful because conversion measurement was incomplete
Preliminary results from my OpenAI Ads Manager account, captured September 4, 2026. Amounts are USD. This is one campaign, not a market benchmark.
OpenAI Ads Manager performance overview showing $41.62 spend, 2,937 impressions, 91 clicks, and a $0.46 cost per click
The Ads Manager overview showed $41.62 in spend, 2,937 impressions, 91 clicks, and a $0.46 average CPC. It also still asked me to finish conversion setup.

The dashboard math is internally close. Ninety-one clicks divided by 2,937 impressions is 3.098%, which rounds to the displayed 3.10% CTR. Dividing $41.62 by 91 gives $0.457 per click, which rounds to $0.46.

There is a small reporting wrinkle worth recording. The campaign table showed a $14.24 average CPM, while the captured totals imply about $14.17 per thousand impressions. The data was marked preliminary, so I would not treat that seven-cent difference as meaningful. It is still a useful reminder to preserve dated screenshots when publishing an early case study.

How I configured the campaign

  1. Campaign type: Standard, rather than Product feed.
  2. Objective: Clicks. The interface also offered Reach and Conversions.
  3. Location: Morocco.
  4. Budget: $25 per day. The interface rejected $20 and identified $25 as the minimum daily budget in USD.
  5. Platforms: iOS app, Android app, and Web.
  6. Measurement: OpenAI Pixel installed on MarocEmploi.net.
OpenAI Ads Manager campaign table showing MarocEmploi campaign with a Clicks objective and a $25 daily budget
The campaign table recorded the Clicks objective, a $25 daily budget, and a September 3, 2026 start date.

OpenAI’s official campaign guide confirms that advertisers can choose daily or campaign-total budgets and target by country and eligible ChatGPT platform. It also explains an important budget behavior: a daily-budget campaign can spend up to twice the selected amount on one day, while the seven-day total is capped at seven times the daily budget. My $41.62 total is 1.66 times the $25 daily target, so that total by itself does not indicate an overdelivery error.

The creation flow also exposed landing-page parameter templates for campaign, ad group, ad, ad account, and oppref. I would keep OpenAI’s identifiers and add my own UTM parameters. That gives analytics two ways to reconcile a visit when investigating attribution.

The custom audience was ready, but too small for inclusion

OpenAI Ads Manager custom audience named marocemploi with Ready status and fewer than 25,000 matched users
My uploaded audience was processed with no invalid rows, but Ads Manager reported fewer than 25,000 matched users.

I uploaded a first-party MarocEmploi audience. Ads Manager marked it Ready and showed no invalid rows, but the matched size was under 25,000. The interface identified it as available for exclusion only.

That is a platform rule, not a file error. OpenAI says an audience needs at least 25,000 matched members for inclusion targeting or bid adjustments, and recommends at least 100,000 for more reliable delivery. An audience below the threshold can still be used to exclude existing users.

This changes the practical meaning of “custom audience” for a small advertiser. Uploading a clean list does not guarantee that it can become the campaign’s target. For my test, the honest description is that I added a custom audience to the account, but it was not large enough to serve as an included audience.

The OpenAI Pixel is live on MarocEmploi.net

OpenAI Ads Manager Event Stream receiving page_viewed events from the MarocEmploi website through pixel_sdk
The live Event Stream received 46 recent page_viewed events through pixel_sdk when I verified the installation.

I installed the OpenAI Pixel through a small WordPress plugin on MarocEmploi.net. The plugin loads OpenAI’s SDK, initializes the account’s Pixel, and sends a page_viewed event on eligible public pages. It avoids WordPress admin, feeds, REST requests, AJAX requests, 404 pages, and robots output. It also respects the site’s marketing-consent function when that function is available.

The installation is active and the Event Stream is receiving data. That proves the base page-view signal reaches Ads Manager. It does not prove that an application, signup, or another valuable action is being measured.

My main finding: “Pixel live” and “conversion measurement complete” are different states.

OpenAI’s measurement documentation supports both the Pixel and a server-side Conversions API. It recommends using a shared event ID to deduplicate the same event sent by both methods. It also uses the oppref click identifier for attribution. My next implementation step is to send a meaningful completion event after a successful job application or another clearly defined outcome, then verify it in the Event Stream before judging campaign ROI.

Why zero tracked conversions is not yet a campaign verdict

The campaign table showed zero conversions, but the account overview simultaneously showed a task to finish setting up conversions. The only confirmed live events in my capture were page views. Those facts limit the conclusion I can draw.

  • I can say the campaign generated recorded impressions and clicks.
  • I can say the base Pixel was receiving page-view events.
  • I cannot say the 91 clicks produced zero applications or zero business value.
  • I cannot calculate cost per application until the application outcome is measured.

This is the biggest trap in an early ChatGPT Ads review. Cheap clicks are not success, and a zero in an unfinished conversion column is not failure. The campaign is currently a traffic test with an incomplete outcome layer.

A policy warning for job sites

MarocEmploi is a job platform, so OpenAI’s ad policy deserves special attention. The policy allows job platforms, but prohibits ads for individual job listings. That means my ad creative and landing page should describe the broader MarocEmploi service, its search experience, or a general category of opportunities. They should not promote one named vacancy as the advertised product.

This is not a minor copy detail. A dynamic landing page that resolves directly to a single listing can change the policy risk even if the headline sounds general. I would send the campaign to a stable job-discovery page and audit the final URL, redirects, copy, and image together.

What I would change before spending the next $25

  1. Define one valuable event. For MarocEmploi, that could be a successfully completed application or a verified account action. The event should fire only after the server confirms success.
  2. Test the event in Ads Manager. I want to see the event in the stream with the intended parameters before reactivating spend.
  3. Preserve attribution. I would retain oppref and campaign macros, then store the identifiers with the first-party session according to the site’s consent and privacy rules.
  4. Add server-side measurement later. The Conversions API can make the signal more resilient, but Pixel and API copies need the same event ID for deduplication.
  5. Keep the audience claim precise. Until the list clears the 25,000 matched-user threshold, I would use it for exclusion rather than describe it as targeted delivery.
  6. Review generated text. Ads Manager offered AI text customization that can personalize or translate copy without individual approval. For regulated or policy-sensitive topics, I would monitor the resulting variants closely.
  7. Keep a dated evidence log. Screenshots, campaign settings, landing-page versions, and measurement changes make later comparisons defensible.

My first-look ChatGPT Ads review

The buying interface is recognizable if you have used other ad platforms. It supports campaign and ad-group structure, country and platform targeting, context hints, daily or total budgets, first-party audiences, Pixel measurement, server-side measurement, bulk uploads, and product feeds.

The first traffic result is encouraging. A $0.46 average CPC is well below OpenAI’s general starting recommendation of a $3 to $5 maximum CPC bid. That comparison needs care: a recommended maximum bid is not an expected clearing price, and my Morocco employment campaign is not comparable to every advertiser or market.

The product still asks advertisers to understand its rules. Context hints are not exact-match keywords. A small customer list may be usable only for exclusions. Daily spend can move above the nominal daily target. AI-written variants may appear without per-variant approval. Conversion reporting is only as useful as the events you finish implementing.

My verdict after $41.62: ChatGPT Ads produced inexpensive traffic in this narrow test, but I do not yet have evidence of inexpensive job applications. I would fix conversion measurement before raising the budget.

A practical seven-day test plan

  • Day 1: define the business event, install it, and verify it in the Event Stream.
  • Day 2: validate the landing page on iOS, Android, and Web, including attribution parameters.
  • Day 3: launch one narrow campaign with a capped budget and a general, policy-safe landing page.
  • Days 4 and 5: inspect query context, click quality, generated text variants, and event quality. Do not optimize around page views alone.
  • Day 6: compare Ads Manager clicks with first-party sessions and investigate large gaps.
  • Day 7: decide using cost per valuable action, not CPC. Pause, repair, or scale based on that result.

Primary sources and further reading

For the wider rollout, privacy controls, and targeting changes, read my earlier analysis: OpenAI says ChatGPT Ads hit a $1B run rate. Targeting is the bigger story.

If your post-click path is a store rather than a job platform, my AI ecommerce integration guide for Shopify and WooCommerce maps the platform choices and control points.

Disclosure: this article documents my own MarocEmploi advertiser account and my own website implementation. It is not sponsored by OpenAI. The results were preliminary when captured on September 4, 2026, and should not be treated as a universal performance benchmark.

Leave a comment

Your email address will not be published. Required fields are marked *