Ads
The Ads page (/ads) is the control center for your paid campaigns. It always opens on the Performance table. A sub-navigation bar gives access to the other tabs.
The tabs
| Tab | Address | What you do there |
|---|---|---|
| Performance | /ads | Read the real numbers of every campaign, ad set and ad, and spot wasted budget |
| Library | /ads?adsTab=bibliotheque | See what is about to go live, what is running and what stopped, with the recipe of every creative |
| Engine | /ads/arbitrage | Create and follow arbitration rules (budget, cuts, resupply). See the Engine page |
| Journal | /ads/historique | Everything that happened to your ads: engine, launches, imports, actions in the app, API calls, syncs |
Tools reserved for the DURUM team
Five more tabs appear after a "DURUM" separator, for the DURUM team only: Home (/ads?adsTab=home), Angles (/ads?adsTab=angles), Campaigns (/ads/campagnes), Score (/ads?adsTab=score) and Legacy engine (/ads/moteur). A link or bookmark to one of them simply brings you back to the Performance table, with no access-denied screen. They are described at the bottom of this page.
Performance tab
The top cards
Five cards summarize the selected period: Spend, Revenue (sold), ROI (sold), CAC and Rev. / Client. Each card has a tooltip explaining its calculation (for example "Sold ROI = attributed sales at their declared value, divided by ad spend. 1x = profitable"). The cards are customizable: hide them, reorder them or add others from the metrics catalog, exactly as on the Overview.
Sold and collected never add up
"Revenue (sold)" counts attributed sales at the value of a sale declared in Settings > Conversions. Cash actually collected shows in "Collected" and "ROI (collected)". They are two readings of the same result, not two amounts to sum.
The ads-attributed funnel
Below the cards: Leads, Applications, Bookings, Sales and Unique clients (since the start of the account, all periods). Stages with no data on the account are hidden automatically. Bookings are counted per unique person: the same person who rebooks (follow-up, reschedule) counts as 1.
Spend by campaign
A stacked chart shows spend per campaign over the period, with a "Show trend" button.
The "Campaigns, detailed performance" table
The table is a tree: click a campaign to see its ad sets, then an ad set to see its ads. The first two columns stay pinned on the left while you scroll. The native columns:
| Column | Calculation |
|---|---|
| Campaign (then ad set, then ad) | Name, network and status |
| Spend | Ad spend (Meta, Google and others) |
| Leads / CPL | Attributed leads; CPL = spend ÷ leads |
| Apps / CPAPP | Attributed applications; CPAPP = spend ÷ applications |
| Book. / CPB | Bookings (unique people); CPB = spend ÷ bookings |
| Sales | Attributed sales |
| Revenue (sold) | Sales × declared value of a sale |
| ROI (sold) | Attributed revenue ÷ spend |
| CPA | Spend ÷ sales |
| No-Show / Cancel | Missed and cancelled meetings (shown only when the account has meetings) |
| Verdict | Automatic classification of the row (see below) |
Columns of a stage the account does not have (for example Apps when there is no application) do not appear.
Simple or Multi-touch
Two chips above the table, Simple and Multi-touch, show or hide three columns: Discovery, Closing and Assisted, the split of revenue between the ads that touched the contact. They change no other number. The attribution model used by these columns is set in Settings > Attribution, not here.
The "Columns" button
The Columns button opens the column manager:
- Table columns: hide or show each native column, move it up or down, reset.
- Add a column, Metric tab: a metric from the catalog, grouped as Base, Funnel, Meta, Revenue and Others (Spend, Leads, CPL, Applications, Bookings, Meetings, Meetings held, Cost per held booking, Sales, Revenue (sold), ROI (sold), Collected, ROI (collected), CPA, CPC, CPM, CTR, Frequency, Impressions, Reach, Clicks, % Leads to book, % Leads to close, % Autobook, Cost per autobook).
- Formula tab: a calculated column "Metric A, operator, Metric B" (plus, minus, times, divided by), with its format (amount, number, percentage, ratio) and an optional name.
- Display tab: the display format.
Conversion columns
Every conversion defined in your account (Settings > Conversions) can become a column, per campaign and per ad. Only the conversions you created are offered, never the raw catalog of detected events. Clicking a cell opens the list of contacts behind the number ("N contact(s) over the period").
The verdict
The Verdict column classifies every campaign, ad set and ad with the same rule, in this order:
| Verdict | Condition |
|---|---|
| New | Less than 50 (account currency) spent |
| Scale | ROI of at least 3 and closing rate of at least 20% |
| Maintain | ROI of at least 1.5 |
| Weak leads | ROI between 0 and 1.5 and show rate below 50% |
| Weak conversion | ROI between 0 and 1.5 and closing rate below 15% |
| Pause | ROI below 1, no sale, more than 3 meetings |
| Investigate | ROI below 1 (other cases) |
| Maintain | Everything else |
ROI = attributed revenue ÷ spend. Closing rate = sales ÷ meetings held. Show rate = meetings held ÷ meetings booked.
INFO
The verdict is a quick read, not a decision. The Engine is what cuts or moves budget (paid tier), with its verdict gate and guard rails.
Ad status and pause
Every ad carries its Active or Paused dot (status read from Meta) and its visual preview. Management roles (owner, admin, agency, media buyer) can activate or pause a Meta ad directly from the table; the change is written to Meta and confirmed by a message ("… paused on Meta"). The write is re-checked server side.
Cell drilldown
Click a leads, applications, bookings, sales or revenue number to open the list of events attributed to that row:
| Detail column | Content |
|---|---|
| Date | Event date |
| Name / Email | The contact (clickable) |
| Product | Product concerned |
| Campaign | Source campaign |
| Amount | For sales and revenue |
| Rep | The assigned rep |
| Status | Badges Closed, Booked, No-show, Cancelled, and "Recorded call available" |
Follow-ups of the same person are deduplicated ("N unique people"); a person who booked several times shows "booked N×". The list loads page by page as you scroll. The detail is unavailable while a Rep or Product filter is active: remove the filter to explore the contacts.
Naming convention
The table shows ad names in full (the complete name is available even when truncated), because the naming convention puts the discriminating information at the end of the name:
| Code | Meaning | Example |
|---|---|---|
| TX | Copy variant | T1 = first copy, T2 = second copy |
| IX | Visual variant | I1 = first visual, I2 = second visual |
| Version | Iteration of the same ad | v2, v3 |
An ad named … T1-I3 uses the first copy with the third visual.
Non-acquisition
A campaign may not be there to sell (recruiting, HR, employer brand). Its leads and meetings leave the account's CPL, cost per meeting and closing rate. The Non-acquisition block, under the table, shows their numbers in their own base. A campaign is classified in Settings > Segments. The block does not appear when the account has no non-acquisition campaign.
Ad waste
The "Ads to watch, wasted budget" section lists ads that spend without passing the next funnel stage, with a cascading rule based on 2 times the account's average cost over the period:
| Reason shown | Condition |
|---|---|
| No application | Spend of at least 2 × the average cost per application, and 0 application |
| No booking | The ad has applications (or the account does not measure them), spend of at least 2 × the average cost per booking, and 0 booking |
| No sale | The ad has bookings (or the account does not measure them), spend of at least 2 × the average cost per sale, and 0 sale |
Each card shows the full ad name, the reason and the amount spent. The first six are shown, sorted by spend descending; "Show all N ads" expands the rest.
INFO
An ad flagged here is not cut automatically. If you want the cut to be automatic, that is the job of an Engine rule (paid tier).
Ad attribution
The numbers on this page use full attribution: they do not change with the attribution model (the model only serves the Multi-touch columns). Every event is tied to the ID of the ad that produced it, then to its real campaign and real ad set. The utm_content parameter of your links carries that ID; DURUM.ai resolves it to the ad, even if the ad was renamed.
An ad that converted but no longer spends (evergreen, cut ad) still appears in the table, with a spend of 0, so that the campaign cell always matches its drilldown.
Reliable attribution
For attribution to work, your ads must pass UTM parameters. If sales appear without being attributed to an ad, contact your account manager to check the setup.
Library tab
The Library shows what is coming, what is running and what stopped, with the recipe of every creative and its real performance as measured by DURUM.ai.
Two sub-tabs
| Sub-tab | Content |
|---|---|
| To publish | What is about to go out: ads created or imported, not yet live. Up next zone: the publishing queue, grouped by destination campaign (otherwise "to place"), from best potential to lowest, unscored ads last |
| Published | What already went out. Live zone: creatives active on the networks, sorted by real cost per lead, with the account's median CPL. Bank zone: paused, finished or never served, grouped by campaign |
A Success rate card sits next to the zones: the share of ads published by DURUM.ai that beat the account (cost per conversion at 80% or less of the account's over the same window, with at least 3 conversions; ads under 20 of spend do not count).
Two views: List or Thumbnails. Clicking an ad opens its full detail: full-size visual, all the text (hook, headline, primary text, body, call to action), the recipe (angle, funnel, audience, product), the target campaign or the origin, and all its Meta deliveries (every linked ad ID, multi ad sets, identical copies).
You can tick ads or a whole campaign and Remove from the library: the ad stays on Meta, it leaves this view and the import does not bring it back. The Removed filter lets you see them again and restore them.
The potential score
Every waiting ad carries its potential score (0 to 100), given once when it enters the library and never presented as measured performance. Clicking the badge opens "Why this score". The full mechanism is described on the Potential score page.
The creative inventory
Under the zones, the account's full inventory ("N creatives · real DURUM performance"):
| Control | Options |
|---|---|
| Actions | Import all my ads (Meta), + One ad, Bulk import, Enrich from Meta |
| Filter | All, Active, Dead, Pending |
| View | Folders (campaigns → ad sets → ads, with an account overview: leads, spend, CPL, sales, campaigns) or List |
| Group by | None, funnel, structure, campaign |
| Sort by | CPL (best first), Conversions, Most recent |
| Search | Text, angle, name |
Every creative shows its recipe: copy structure (PAS, AIDA, BAB, listicle, etc.), angle, funnel (VSL, lead magnet, webinar, application, other), visual sub-style (UGC photo, talking head, testimonial, carousel, etc.) and its blocks (hook, problem, solution, proof, offer, CTA). Meta data and DURUM data are told apart by a tooltip ("Real DURUM data" or "Meta data (not DURUM)").
A Drafts to validate section lists generated ads waiting for your approval before entering the queue.
Engine tab
The Engine tab (/ads/arbitrage) is the unified arbitration engine: a rule = a scope, an arbitration KPI with its guard rails, a budget and its split, ad cuts. Everything is described on the Engine page.
Journal tab
The Journal tab (/ads/historique) gathers everything that happened to your ads, in one place: cuts, budgets and ad sets paused by the engine, launches, imports, scoring, your actions in the app, API calls and syncs. Every engine action that is still reversible carries its Undo button. Details are on the Engine page, Journal section.
DURUM team tools
These tabs are visible to the DURUM team only. They are described here so you know what your account manager does.
| Tool | Role |
|---|---|
| Home | A three-step guide: prepare your creatives (queued), build the campaign (ready to publish), let the engine optimize (pending decisions) |
| Angles | Coverage of angles, hooks and formats tested and untested on the account; generation of suggestions (new angle, hook variant, format test, copy refresh, gap fill) with ready-to-use copy, queued, in test, then results. The analysis uses AI credits billed on usage |
| Campaigns | The only place to build and launch a campaign: pulls the ready ads from the Library, full parameters, multi-network |
| Score | The calibration of the potential score: per score bucket, the share of winners, the share of failures, the median ratio of the ad's cost per conversion over the account's, at 30 and 90 days. An internal learning tool |
| Legacy engine | The rules engine from before the unification, still active while its rules are migrated. See Engine, Legacy engine section |