The full setup: pixel, purchase tracking, AI-generated ads, and the campaign build inside Meta.
You already have the course, the funnel, the sales page, and the emails. This guide covers only what's left: tracking, ad creation, and getting the ads live inside Meta.
(Assumed price: $4.99. If the offer is actually $499, every step is identical. Only the budget maths in Part 9 changes.)
Meta needs to know two things to sell your course for you:
The pixel runs in the browser, so ad blockers, iOS privacy settings and a closed tab all cost you events. The Conversions API (CAPI) sends the same sale a second way, from Systeme's server straight to Meta, where none of that can interfere. That is why CAPI is worth the twenty minutes: not extra data, more reliable delivery of the data you already have.
The build order:
| Step | Where | What you do |
|---|---|---|
| 1 | Events Manager | Create the pixel |
| 2 | Systeme.io | Paste the pixel onto all funnel pages |
| 3 | Systeme.io | Set the thank-you page event to Purchase |
| 4 | Both | Connect the Conversions API |
| 5 | Events Manager | Test it |
| 6 | Your AI chat | Generate the ads, Prompts 1 to 3 |
| 7 | Ads Manager | Build the campaign |







fbq('init', '...') line and check the number matches the dataset you just created. See the warning below. Then click Copy code.
<head> and </head> tags of your page. You are pasting into Systeme rather than editing raw HTML, so click Next and let Part 2 handle where it actually goes.

Check the pixel ID before you copy it. The base code on step 8 can show the ID of a different dataset in the same account rather than the one you just created. Copy that and you install the wrong pixel, and every event lands in the wrong place. The reliable route: close the wizard, go to Datasets in the left menu, click your new dataset, and use the Set up Meta Pixel button on its own page. Same screens, but the code is guaranteed to be that dataset's.
Naming note: the left menu says Datasets. A dataset is what older tutorials call a pixel. The base code is still called the Meta Pixel code.
Once the pixel is done, Meta offers to connect the Conversions API. That is Part 4, and the option you want there is Set up manually, not Google Tag Manager.

Keep this tab open. You come back to it for the CAPI token and for testing.
Systeme.io has no "paste your pixel ID" field. You paste the whole code block into a tracking-code box. Two ways:
Option A: whole account at once (recommended)
Option B: page by page
Systeme's own doc is explicit: the pixel goes on all pages of the funnel, sales page AND order page AND thank-you page. Not just the page where the sale happens. Option A handles that in one paste.
The base pixel only says "someone was here". The Purchase event says "someone bought". In Systeme you do not write any code for this. There is a dropdown.


That is the whole step. Systeme sends the Purchase event server-side through the Conversions API once you have connected it in Part 4.
If your funnel has an opt-in page before the sales page, set that page's dropdown to Lead the same way. Leave every other page on None.
Why there is no code here. Systeme's Conversions API doc puts it plainly: "add the corresponding event to every page you would like to track using the Conversions API (this setting is found under Settings when editing the page)". The dropdown is the event.
The optional extra. Everything above is server-side. You can also fire a browser-side copy of the same event, which catches a few people the server misses and vice versa. It is genuinely optional, and skipping it costs you very little. If you want it, add this to the thank-you page's Edit header code, underneath the base pixel:
<script>
fbq('track', 'Purchase', {}, {eventID: '01M52Z4BMCC30DVS5FSYZDTK70_43867349_purchase_process_id_hash_d41d8cd98f00b204e9800998ecf8427e'});
</script>
The 01M52Z4BMCC30DVS5FSYZDTK70_43867349_purchase_process_id_hash_d41d8cd98f00b204e9800998ecf8427e placeholder is not a mistake and the empty {} is deliberate. Systeme swaps the placeholder for a real ID at conversion time, and Meta uses that ID to recognise the browser event and the server event as one sale rather than two. Leave both exactly as written, and do not hand-add a value here: the value comes through the Conversions API.
The opt-in page equivalent uses a different placeholder:
<script>
fbq('track', 'Lead', {}, {eventID: '01M52Z4BMCC30DVS5FSYZDTK70_43867349'});
</script>
Skip Meta's point-and-click "event setup tool". Systeme's doc warns it does not always work on their pages.
CAPI sends the sale from Systeme's server straight to Meta, so it survives ad blockers, iOS privacy settings and closed tabs better than the browser pixel. Same event, a second and sturdier route.
Step 1: get the access token (in Events Manager)
Meta has several routes to the same button. This is the short one.



The Dataset Quality API choice is one-way. Meta's own notice on that screen: once a dataset is configured for direct integration with the Quality API, opting out is not currently available. Pick deliberately.
If Meta sends you the long way round. Starting from the dataset's Overview tab and clicking Set up Conversions API launches a wizard: Recommended setup, then How do you want to connect your website, then Instructions, then a five-stage "Connect activity with Conversions API" flow that asks you to select events and parameters.



You can ignore all of it. That wizard writes personalised instructions for a developer building their own server integration. Systeme already is your server integration. Every event and parameter screen in there changes nothing about what Systeme sends, which is decided by the per-page dropdown from Part 3. Click through to Generate an Access Token in the left-hand list and you land on the same screen as step 2 above.
Step 2: plug it into Systeme.io


Where your Pixel ID lives. In Events Manager, click Datasets in the left menu. The long number printed under each dataset's name is its Pixel ID. It is the same number you noted in Part 1, and the same one inside the base code on the fbq('init', '...') line. The Click here to view your Facebook Pixel settings link in this box opens Events Manager if you need to go and fetch it.
Paste the whole token. It is one long unbroken string, usually starting EAA and often 200 characters or more, with no spaces, dots or dashes in it. There is nothing to trim and no shorter piece hidden inside it. Length varies between tokens, so a new one being longer than an old one is normal and not a sign anything went wrong.
The credentials are per domain, not per account. If your funnel serves from a different domain to the one you filled in, the sale never reaches Meta. Check which domain the funnel's pages actually use before you spend anything.
Step 3: attach the event to the thank-you page

That is CAPI done. Every sale now reaches Meta from Systeme's server. If you also added the optional browser snippet in Part 3, the same sale arrives twice and Meta uses the eventID to count it once.
The test tool is buried, and the results do not appear where you expect.
Then buy your own course with a real card. Check the Purchase event turns up on the dataset's Overview tab. That is normal reporting rather than the test feed, so give it up to 30 minutes before you decide anything is wrong.
These prompts are built to run in your other chat, the one that already knows the course. They work as a chain: Prompt 1 extracts the course into a source sheet, Prompt 2 writes ads only from that sheet, Prompt 3 turns the winning ads into image prompts. That chain is what keeps the ads congruent with the course and the sales page, and every prompt carries the full Meta compliance rules inside it, so the output lands pre-screened.
Run them in order, in the same conversation.
Build me an AD SOURCE SHEET for the course we have been working on. This sheet becomes the single source of truth for a Facebook ad campaign, so only include what is TRUE and verifiable from what you know about the course. Nothing invented, no placeholder stats, no guessed testimonials. Output exactly these sections: 1. THE BUYER: who this course is for, in plain words. Their situation, what they have tried, what they want. Include 5 exact phrases this person would type or say about their problem (their words, not marketing words). 2. THE PROMISE: the single transformation the course delivers, in one sentence, stated the way the SALES PAGE states it. Also list the sales page headline verbatim if you have it. 3. THE MECHANISM: how the course actually gets the buyer there. What's inside, what makes the method different from the obvious alternatives. 4. THE PRICE FRAME: it costs $4.99. List 3 honest ways to frame that price against things the buyer already pays for. 5. REAL PROOF: only proof that actually exists (numbers of students, years, reviews, the creator's real credentials). If a proof point does not exist, write NONE. Do not soften this. 6. TOP 5 OBJECTIONS: the reasons this buyer hesitates, each with the honest one-sentence answer the course can truthfully give. 7. VOICE: 5 notes on how the creator actually talks (sentence length, attitude, words they use, words they would never use). Keep it under 600 words. This is a working document, not sales copy.
Using ONLY the AD SOURCE SHEET above, write me a Facebook ad campaign for the
$4.99 course. Do not introduce any claim, number, or story that is not on the
sheet.
STRUCTURE
- 3 ad sets, each on a different angle: (1) the problem the buyer already knows
they have, (2) the mechanism (what makes this method different), (3) the
price/no-brainer frame.
- 3 ads per ad set. For each ad give me:
- Primary text SHORT (1-2 sentences, first line must work alone)
- Primary text MEDIUM (3-5 sentences)
- Primary text LONG (a short first-person story or proof-led paragraph)
- Headline (aim for 27 characters or fewer, hard cap 40)
- Description (one line)
- Suggested CTA button (choose from: Shop now, Learn more, Sign up, Get offer,
Order now, Download)
- The first line of every ad must make the SAME promise the sales page headline
makes (section 2 of the sheet). A stranger who clicks must land on a page that
says what the ad said.
META COMPLIANCE RULES (non-negotiable, apply to ALL THREE text lengths; Meta
reviews the long version just as hard as the short one)
1. PERSONAL ATTRIBUTES: never assert or imply anything about the reader's
situation. No "Are you struggling with...", no "Tired of being broke?", no
"you" attached to any hardship, health state, age, or financial status
("vulnerable financial status" is a protected attribute in Meta's policy).
Never use "other" in a way that implies you know what the reader is
("meet other creators" fails, "meet creators" passes).
THE FIX: put every hardship in first person. "I wasted four years on this"
does the work of "you've been wasting years" and breaks no rule.
2. MONEY CLAIMS: zero income figures, in any variant, even ironic ones, even
in the long version. No "$X per month", no "get rich", no "turn a small
investment into...", no guaranteed or risk-free anything, no promised
outcome attached to a timeframe. Reframe every loss as TIME, not money
("it cost me four years", never "it cost me $30,000"). Figures for what
something COSTS are fine ($4.99 is fine, tool costs are fine). Figures for
what someone EARNS are not.
3. BANNED VOCABULARY: "actual earnings", "where the money comes from", "how
you actually make money", "make-money-online", "white label", "reseller
rights", "solo ads", "secret", "hack", "guaranteed". Words like "scheme" or
"shortcut" only when disparaging the category ("this is not a get-rich
scheme"), never describing the offer.
4. NO ENGAGEMENT BAIT OR CLICKBAIT: no "you won't believe", no withholding
("the one thing nobody tells you..."), no LIKE/tag/share requests, no
sentences in all caps, no !!! or ???.
5. HONESTY: every claim traceable to the source sheet. Where the sheet says
NONE for proof, write no proof claim at all. No invented students, results,
or reviews.
6. STYLE: grade 8 reading level or lower. Short sentences. No em dashes
anywhere. Write like a person, not a press release.
Present it as: campaign map first (ad sets + angle + hook type per ad), then
every ad written out in full.
For each ad above (or the ones I pick), write ONE image concept and its generation prompt for an AI image tool. Two output sizes per concept: 4:5 (1440x1800, Facebook feed) and 9:16 (1440x2560, Stories/Reels). CONCEPT RULES - The image's job is to stop the scroll AND match the ad's first line, so the click feels continuous from image to text to sales page. - Prefer: a real-feeling scene from the buyer's world, a clean object metaphor for the mechanism, or a bold short-text card in the course's brand colours. - On-image text: keep it minimal (one short phrase max). There is no 20% text rule anymore, but text competes with the primary text and gets reviewed as ad copy, so the same compliance rules apply to every word ON the image. IMAGE COMPLIANCE RULES (Meta reviews the image as hard as the text) 1. NO fake user-interface elements: no play buttons, no checkboxes, no poll or notification mockups, nothing that looks clickable but isn't. 2. NO income imagery: no cash stacks, no money raining, no revenue dashboards, no earnings screenshots (blurred numbers still read as an earnings claim). 3. NO before/after framing of any kind. 4. NO website URL, domain, or handle anywhere on the image. The link lives in the ad's destination field; a URL on the creative kills tracking. 5. NO real person's likeness unless we own the photo rights, and no celebrity lookalikes. No Meta/Facebook/Instagram logos. 6. For 9:16: keep the top 14%, bottom 35%, and 6% each side free of text and key elements (Meta's interface covers those zones). 7. Photorealistic humans in AI images are allowed (Meta labels AI content automatically, no disclosure needed for a normal product ad), but if in doubt, prefer scenes, objects, or text cards over fake humans. For each concept give me: the concept in one sentence, the full generation prompt (including style, lighting, composition, and the exact on-image text if any), and which ad it belongs to.
Take the prompts from Prompt 3 to any image model.
Specs that matter (from Meta's current ads guide):
| Placement | Ratio | Resolution | Format |
|---|---|---|---|
| Facebook Feed | 4:5 | 1440 x 1800 | JPG/PNG, max 30 MB |
| Stories / Reels | 9:16 | 1440 x 2560 | JPG/PNG, max 30 MB |
Note the feed recommendation is now 4:5 portrait, not the old 1:1 square most guides still teach. A 4:5 image takes more screen than a square one. You can upload one image and let Meta crop per placement, but a purpose-built 9:16 for Stories beats an auto-crop.
Before uploading, eyeball every image against the compliance list in Prompt 3, especially: no URL crept onto the image, no garbled AI text, no fake UI.
Ads Manager changed in the last year: "Advantage+ shopping campaigns" no longer exist as a separate type. Choosing the Sales objective now gives you one flow with Advantage+ ON by default, and Meta's own data says leaving it on performs better for exactly this kind of broad, low-ticket offer. The build below leaves it on.
Campaign level
[Course] - $4.99 - Sales - 2026-08.Ad set level
Ad level (repeat per ad)
problem-angle-hook1.https://www. form.Start with one ad set of 3 ads (your best angle) rather than all three angles at once. Part 9 explains why: at low budgets, three ad sets starve each other.
Publish
This part is strategy, not doc-verified fact. Marked so you know which is which.
What Meta's docs do say:
The maths for a $4.99 front-end (advice, not doctrine): 50 purchases a week at a realistic $5-15 cost per purchase means $35-100+ per day to feed one ad set properly. Most people won't start there, and that's fine. The honest framing:
First-week reading order: CTR (are the ads stopping anyone? under ~1% on cold traffic, the creative is weak) → CPC and landing-page views (are clicks arriving on the page?) → Purchases and cost per purchase (only meaningful after enough volume). Don't judge purchase cost on day one at $10/day.
Rejections are normal in this vertical, and you've been here before. The playbook: