Per-ad charges, monthly invoices, payments and a double-entry ledger
📨 Enforcement notices
Formal, numbered, bilingual (Arabic / English) notices the CMC issues to advertisers for confirmed violations. Each carries a sealed, tamper-evident evidence snapshot.
• Whole-word matching in Arabic, Kurdish and English — بيرة never fires on كبيرة, bet never on better; real prefixes/suffixes (و ب ال … ات ة ها) are still caught.
• Context terms — an ambiguous phrase only counts when a supporting term is present (e.g. “guaranteed results” + a health word).
• Exclusions — known benign uses are skipped (medical alcohol, toy guns, البندقية = Venice, كازينو = café).
• Product rules skip news / government pages — journalism about alcohol or weapons isn't advertising.
• Flags are leads for review, not verdicts. Untouched flags that stop matching after a rule edit are auto-dismissed.
Rules
Rule
Category
Severity
Applies to
Keywords
Open
Enabled
🪪 Advertiser licensing register
Every advertiser currently running ads in Iraq, with its CMC licence status. Marking an advertiser unlicensed, suspended or letting a licence expire automatically opens a compliance case while it keeps advertising.
⬆ Import a CMC licence register
Excel (.xlsx / .xls) or CSV · Arabic, Kurdish or English column headers
Each row is matched to a Facebook page by page ID, page URL, Instagram, website, phone or name — including Arabic ↔ Latin spellings (زين ↔ Zain). Uncertain matches wait for your confirmation; rows not yet advertising are kept and linked automatically when they appear. Creator registers add creators straight into monitoring.
Register bloggers, celebrities and content creators with their accounts. Their posts are pulled from Instagram, TikTok, Facebook and YouTube, sponsored content is detected (disclosed vs undisclosed), brand tags and promo codes are extracted, and every post runs through the compliance rules.
Every advertiser running more than 10 ads is automatically profiled — content mix, dominant tone & sentiment, recurring themes, cadence and a written summary. Click any card for the full profile.
Monitoring
Add a page to watch
Paste a page's numeric ID or its Ad Library URL. We'll follow every ad it runs and flag anything new, changed, or stopped. Tick collect now to pull its ads immediately.
🔎 Watch terms — get an alert whenever a new ad or creator post mentions a name, brand, product or slogan
🆕 New ads on watched pages — first seen in the last 14 days
🎨 Creative & content intelligence
Content type mix
Creative quality distribution
Copy language
Sentiment of ad copy
Tone of messaging
About sentiment & tone
Reach performance by content type — avg EU reach
Copy length (words per ad)
Avg quality by content type
Most-used calls-to-action
How the score works
Top advertisers by creative quality — min. 3 ads
Advertiser
Ads
Avg quality (0–100)
Category intelligence — what kinds of business advertise, and how
📈 Fastest-growing pages — live ads, this window vs the one before
📉 Pulling back
🆕 New advertisers — first ad ever seen in this window
👥 Audience growth — followers, from page snapshots
🚀 Most new ads launched this window
📈 Trends, narratives & duplication
The core regulatory signals — the same message pushed by different advertisers (coordination / copycat campaigns) and heavily-repeated creatives (spam or dynamic templates).
🚩 Cross-advertiser narratives — one message, many advertisers, same window
Most-reused creatives — identical ad copy run over and over
What's ramping up right now — new-ad volume over time, the advertisers surging fastest, and the hardest-pushed live ads.
New ads by week — campaign momentum, last 12 weeks
Trending advertisers — new ads, 30d
Trending ads — live, 45d, by push
What advertisers are saying. Note: dynamic-catalog templates (e.g. {{product.brand}}) and common commerce words inflate the raw counts — read these as themes, not verbatim.
Rising keywords — surging in the last 30 days
Top keywords
Top phrases
🧭 Market intelligence
Who is advertising, how concentrated the market is, how long ads run, where they lead — and which advertisers appear to be connected.
Loading…
🤖 Bot detection
Inauthentic-engagement detection — copy-paste comment rings, repeat accounts and spam across collected comments, plus page-level engagement-ratio anomalies. (Meta ads carry no engagement, so this runs on collected comments + the page engagement sample.)
Meta doesn't publish what commercial advertisers spend. We estimate it from how people engage with their posts: more reactions point to wider reach, and reach priced at a cost-per-thousand gives a spend figure. Adjust the inputs to match your own benchmarks.
Advertiser
Posts
Likes
Comments
Shares
Weighted eng.
Est. impressions
Est. spend (USD)
Only advertisers we've collected post engagement for appear here. Collect more to widen the picture.
🔎 Run a live Ad Library search
This runs a live collection — it takes a few minutes. New ads flow straight into the system.
👤 Users
Add user
ID
User
Role
Status
Email
Created
Last login
Actions
🌱 Growth over time
Growth summary
Ads launched by month
Placement platforms
Active vs inactive
Change velocity (updates / month)
What changes most
Calls-to-action
Audience gender (EU)
Engagement & estimated spend
Content type mix
Copy language
Creative profile & lifespan
Sentiment of ad copy
Tone of messaging
Recurring themes
💳 Billing statement
💬 Audience feedback — sentiment of real comments on this page's posts
🤖 Bot detection — inauthentic-comment signals and engagement-ratio anomalies for this advertiser
Ad creatives — images & video stills from this advertiser's ads
Highest EU-reach ads
Recent updates & collection history
🔌 Data-source integrations
Connectors that pull ad data into the platform. Enable, configure the region, and run on demand. Scheduled connectors also run from the daily job.
🔑 API keys
Issue keys so external systems (e.g. government data consumers) can read ad data over the REST API at /api/v1/… using Authorization: Bearer <key>. Keys are shown once at creation and can be scoped and revoked.
Create a key
Name
Prefix
Scopes
Calls
Last used
Created by
Status
📥 Advertiser inbox
Replies to enforcement notices and spend declarations submitted by advertisers through their portal. Nothing an advertiser submits takes effect until an officer accepts it here.
Loading…
🩺 System health
Loading…
⚙️ Platform settings
General
Regulatory
Political / issue ads running inside the silence window are opened as cases automatically. Clear both dates to switch the check off.
Enforcement notices
Alerts
Alerts always appear in the 🔔 bell. Telegram / webhook are optional; secrets are stored server-side and never shown again.
Spend-estimate model defaults
Baseline assumptions for the engagement-based spend model. Analysts can still override per-session on the Spend page.
Security
Sign-in locks for 15 minutes after 5 wrong passwords on an account (or 20 from one address). Passwords need 10+ characters with letters and numbers. Users who must use 2FA and haven't set it up are taken straight to their account page. Set up your own 2FA first before requiring it for admins.
Backups
Ad creatives (media cache)
Meta's image/video links are time-signed and expire ~2 weeks after a collection. “Cache now” fetches and permanently stores every creative whose link is still valid, so those previews keep working forever. Run it after a collection to lock in that batch's images. Already-expired ones can only be recovered by re-collecting that advertiser.
Audit log
When
User
Action
Target
Detail
IP
🙍 My account
🔐 Your role requires two-factor authentication. Set it up below to continue using the system.