> ## Documentation Index
> Fetch the complete documentation index at: https://docs.dmly.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Read the ads report

> See what each Click-to-WhatsApp ad produced in conversations, contacts and revenue, why the money beside an ad is not return on ad spend, and how first-touch credit works.

**Ads** is a tab on **Reports**. It answers one question: of the people who tapped one of your ads and then messaged you on WhatsApp, what happened next. On screen it introduces itself as *What each ad produced in conversations, contacts and revenue.*

It only reads. Nothing here changes a contact, a conversation or a payment.

<Warning>
  **This is not return on ad spend.** DMLY only ever hears about an ad when somebody taps it and sends you a message. So every figure on this page is a response to your advertising, never the cost of it. The page says so under the cards, in these words:

  > DMLY sees an ad only when somebody clicks it and messages you, so this reports responses — not spend, reach or impressions.

  There is no cost, no cost per click, no impressions and no reach on this page, and there cannot be. Read [What DMLY sees, and what it cannot](#what-dmly-sees-and-what-it-cannot) before you put a revenue figure next to an ad and call it profit.
</Warning>

## Open the report

<Steps>
  <Step title="Open Reports">
    In the sidebar, under **Configurations**, select **Reports**, then select the **Ads** tab. It sits between **Finance** and **CSAT**. **Finance** only appears if your role can view finance, so on some accounts the strip is five tabs and **Ads** is third.
  </Step>

  <Step title="Read the cards">
    **Ads with replies**, **Conversations**, **New contacts** and **Revenue**. **Revenue** is there only if your role can view finance; without it you get the other three.
  </Step>

  <Step title="Read the table">
    One row per ad, busiest first.
  </Step>

  <Step title="Filter by date">
    Set **From** and **To** to narrow the window. Leave both blank and the report covers the trailing 30 days. Some figures ignore your dates on purpose; see [Filter by date](#filter-by-date).
  </Step>

  <Step title="Export">
    **CSV** gives you the table as a spreadsheet. See [Export](#export).
  </Step>
</Steps>

<Note>
  This report covers ads that open a **WhatsApp** chat, which is what the browser tab calls them: **Click-to-WhatsApp ads**. An ad that opens a Messenger or Instagram chat instead is not reported here at all. The ad's details reach DMLY on WhatsApp's own webhook, and there is no equivalent report for the other two.
</Note>

## What DMLY sees, and what it cannot

| DMLY can tell you                                       | Only Meta Ads Manager can tell you                            |
| ------------------------------------------------------- | ------------------------------------------------------------- |
| How many people tapped the ad and actually messaged you | How many people saw it, and how many tapped without messaging |
| How many of those people were new to your business      | What the ad cost, and what each click cost                    |
| How much money those people have since paid you         | Reach, impressions, frequency, and your return on spend       |

To work out whether an ad paid for itself you need both halves: take the revenue on this page and set it against the spend in Ads Manager yourself. DMLY never sees your ad account, so it can never do that sum for you.

<Note>
  **An ad missing from the list is not an ad with a zero.** An ad only appears once somebody has tapped it and messaged you inside your date range. A campaign that ran all week and got no messages is simply absent, and so is one whose only messages arrived outside the window. Read this list as "ads that got a reply", not as "the ads I am running".
</Note>

## What each number means

The cards sum up the whole window.

| Card                 | What it counts                                                                                                |
| -------------------- | ------------------------------------------------------------------------------------------------------------- |
| **Ads with replies** | How many different ads got at least one message in the window. This is the number of rows in the table.       |
| **Conversations**    | Every row's **Conversations** added together.                                                                 |
| **New contacts**     | Every row's **New contacts** added together.                                                                  |
| **Revenue**          | Every row's **Revenue** added together, in your workspace currency. Shown only if your role can view finance. |

The table breaks the same figures down per ad.

| Column            | What it counts                                                                                                                                                                                  |
| ----------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Ad**            | The ad's headline in bold, or **Untitled ad** when the ad has none. Underneath, in small type: **From an ad** or **From a post**, then the ad's ID from Meta, for example `120209428414010371`. |
| **Conversations** | **People**, not threads and not messages. Somebody who sends you four messages off one ad is one conversation.                                                                                  |
| **Messages**      | Every message that arrived carrying that ad, in the window.                                                                                                                                     |
| **New contacts**  | The contacts this ad brought to your business for the first time. See [Who gets credit for a contact](#who-gets-credit-for-a-contact).                                                          |
| **Revenue**       | Money collected from that ad's contacts inside the window. Shown only if your role can view finance. See [Revenue](#revenue).                                                                   |

Rows are ordered busiest first: most conversations, and where two ads tie, most messages.

<Tip>
  Two ads can share a headline, but never an ID. When you need to be certain which ad a row is, go by the ID under the headline, not by the words. If you edit an ad's headline mid-campaign the row shows whatever the ad says now, not what it said when the first person tapped it.
</Tip>

## Who gets credit for a contact

**A contact belongs to exactly one ad: the first one that ever brought them to you.** That is first-touch credit, and it never moves afterwards.

This matters most for the ads you run at people who already know you. Say a salon runs a **Summer Sale** ad in June that brings in forty new clients, then a **Winter Clearance** ad in December aimed at reminding old clients you exist. Fifteen of those June clients tap the December ad and message you.

| What the December ad gets                                     | What the June ad keeps                                    |
| ------------------------------------------------------------- | --------------------------------------------------------- |
| Fifteen **Conversations**, because it genuinely produced them | The fifteen **New contacts**, because it is what won them |
| No **New contacts** for those fifteen                         | Their **Revenue**, wherever they spend it later           |

If it worked the other way round, every re-engagement ad you ever ran would look like your best source of new business, and the ad that actually paid to win those clients would show nothing. So a re-engagement ad is credited honestly: it gets the conversations it caused, and it does not claim customers it merely reached again.

<Note>
  **New contacts counts an ad's whole history, not just your date range.** The dates decide which ads appear in the list, and what their **Conversations** and **Messages** figures are. **New contacts** is then the full count of everyone that ad has ever acquired. Narrowing the dates will not narrow that column.
</Note>

The same rule writes the **Source** on the contact record itself, in words rather than IDs: `WhatsApp ad: Summer Sale`, or `WhatsApp post: Our new opening hours` when the tap came from an organic post rather than a paid ad. A later ad never overwrites it, and neither does anything overwrite a source you typed in yourself, so a contact you had already marked as `Walk-in referral` keeps that. You can filter and segment on **Source**; see [Tags and segments](/contacts/tags-and-segments).

## Revenue

Revenue against an ad is money you collected inside your date range, from the contacts that ad acquired.

It puts the same value on a payment as the [finance report](/analytics/finance-report) does for
**Money in**, deliberately, so the two can never price the same sale differently:

* Dated by the day the payment arrived, not by the day the ad ran and not by the day you invoiced.
* Tips are excluded. A gratuity moves money but is not takings.
* Refunds are taken off.
* A payment that never actually arrived does not count.
* Amounts are added up in your workspace currency, with no conversion between currencies.

One kind of payment lands here that **Money in** deliberately leaves out: a
[gift card](/offerings/gift-cards) being spent. The finance report drops those, because it already
counted that money when you sold the card; this column does not. So an ad-won customer paying with
a gift card adds to their ad's revenue without adding to **Money in**. Either way these rows are a
slice of your takings rather than all of them, and they are not meant to add up to **Money in**.

Because it is dated by the payment, an ad from six months ago can show revenue this month, as long as somebody also tapped that ad inside your window. If nobody did, the ad has no row at all and that money appears nowhere on this page.

<Warning>
  Revenue beside an ad is what those customers paid you. It has nothing subtracted for what the ad cost, because DMLY does not know what the ad cost. It is not profit, and it is not return on ad spend.
</Warning>

### Who can see the money

The **Ads** tab itself is not restricted to people who can see finance. Anyone who can open **Reports** gets it.

* **Can view finance** (owners and admins, and any role you have given that permission): the full report, with the **Revenue** card, the **Revenue** column and revenue in the export.
* **Cannot view finance**: the same report with the money taken out. Three cards instead of four, no **Revenue** column, and no revenue in the CSV. Everything else works normally: conversations, messages, new contacts, the dates and the export are all there.

The money is not merely hidden from the screen for that teammate. It is removed before the page is built, so it is not sitting behind the table waiting to be found. See [Roles and permissions](/account/roles-and-permissions).

Exporting is a separate permission again: **CSV** needs **Export reports**, which is admin only by default. The button is shown to everyone, so a teammate can select it and still be turned away. That is true of every Reports tab.

## Filter by date

**From** and **To** are the only filters, and there is nothing to select to apply them: the report reloads the moment you change a date. A **Clear filter** link appears while either is set and resets both.

* Leave both blank and you get the trailing 30 days, ending today.
* Set **From** later than **To** and DMLY reads it as a typo and swaps them, rather than showing you nothing.

What your dates govern:

| Moves with the dates                         | Ignores the dates                                      |
| -------------------------------------------- | ------------------------------------------------------ |
| Which ads appear at all                      | **New contacts**, which counts each ad's whole history |
| **Conversations** and **Messages**           |                                                        |
| **Revenue**, by the day each payment arrived |                                                        |

With nothing to show, the table reads **No ad-referred conversations in this range.**

On a very busy range a warning appears above the table: **Showing the first 20,000 ad messages in this range. Narrow the dates for exact figures.** Split the range into shorter windows when you need the counts to be exact.

## Export

<Steps>
  <Step title="CSV">
    `click-to-whatsapp-ads.csv`: one row per ad, in the same order as the table, with the columns **Ad ID**, **Headline**, **Type**, **Conversations**, **Messages** and **New contacts**, plus **Revenue** and **Currency** when your role can view finance.

    The file splits the table's single **Ad** cell into three columns, and **Type** carries Meta's own raw word, `ad` or `post`, rather than the **From an ad** wording you see on screen.
  </Step>

  <Step title="PDF">
    Every other Reports tab downloads itself as a formatted PDF from this button. This one does not: selecting **PDF** here fails instead of producing a file. Take the **CSV**, which carries every row.
  </Step>

  <Step title="Workspace report">
    The **Workspace report** button is on this tab like every other, but the combined PDF it downloads has no ads section in it. Use this tab's **CSV** to take these rows away with you.
  </Step>
</Steps>

Your **From** and **To** carry into the CSV, so the file matches the window you were looking at. See [Exporting reports](/analytics/exporting-reports).

## Where else an ad shows up

<Columns cols={2}>
  <Card title="In the inbox" icon="inbox">
    An ad-referred WhatsApp message carries a small card above it reading **From an ad** or **From a post**, with the ad's headline, the first lines of its copy and its picture. Where the ad has a link the card opens it. So whoever answers can see which offer the person is replying to before typing a word.
  </Card>

  <Card title="On the contact" icon="user">
    The contact's **Source** names the ad that brought them in: `WhatsApp ad: Summer Sale`. See [Contacts](/contacts/overview).
  </Card>

  <Card title="In an automation" icon="bolt">
    The **Click-to-WhatsApp ad** trigger starts a flow when somebody messages you from an ad: any ad, or one specific ad. Copy the ID out of this report's **Ad** column to pin a flow to one. See [Triggers](/automation/triggers).
  </Card>
</Columns>

## Caveats

<Accordion title="An ad I am running is not in the list">
  Nobody has tapped it and messaged you inside your dates. DMLY learns about an ad from the message it produces, so an ad with no messages is invisible here rather than a row of zeros. Widen the dates, then check the ad in Ads Manager to see whether it is getting clicks at all.
</Accordion>

<Accordion title="New contacts does not change when I narrow the dates">
  Correct, and deliberate. The dates decide which ads are listed, and how many conversations and messages they had. **New contacts** is the total that ad has ever acquired, so it stays put. To ask "how many new people did this ad bring me in March", set the dates to March and read **Conversations**, then check the contacts themselves by **Source**.
</Accordion>

<Accordion title="A regular customer answered my ad and it shows no new contact">
  That is the report working. They were already yours, so the ad gets the **Conversations** it earned while the credit for winning them stays with the ad that first brought them in. Anything they spend stays with that first ad too.
</Accordion>

<Accordion title="The revenue here does not match Meta's numbers">
  The two are not measuring the same thing. This column is money you actually collected in DMLY from the people an ad brought you: after refunds, without tips, and with nothing subtracted for ad spend. Meta reports on what it observed on its own platform. Expect them to differ, and use Ads Manager for cost.
</Accordion>

<Accordion title="The Revenue column is missing for one of my team">
  Their role cannot view finance. They still get the rest of the report. Give them **View finance (invoices, payments, orders)** if they should see the money. See [Roles and permissions](/account/roles-and-permissions).
</Accordion>

<Accordion title="Two rows look like the same ad">
  Check the IDs under the headlines. Two different ads sharing a headline get a row each, which is right: they are two ads. One ad never splits across two rows, however often you rename it.
</Accordion>

## Next

<Columns cols={2}>
  <Card title="Finance report" icon="coins" href="/analytics/finance-report">
    Where the revenue rules come from: what counts as money in, and what does not.
  </Card>

  <Card title="Triggers" icon="bolt" href="/automation/triggers">
    Start a flow when somebody messages you from an ad.
  </Card>

  <Card title="Contacts" icon="address-book" href="/contacts/overview">
    Contact records, and the **Source** that names the ad.
  </Card>

  <Card title="Exporting reports" icon="file-export" href="/analytics/exporting-reports">
    Every CSV and PDF export across Reports, in one place.
  </Card>
</Columns>
