See what each Click-to-WhatsApp ad produced in conversations, contacts and revenue, what it cost once your Meta ad account is connected, 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.The page has two halves, and they come from different places:
Responses (conversations, messages, new contacts, revenue) come from the messages people send you after tapping an ad. You get these on every workspace, with nothing to set up.
Spend (what each ad cost, and the cost per conversation) comes from your own Meta ad account. You only get it once you connect your Meta ad account in DMLY, and connecting one depends on your plan. Without it, every spend cell is a dash.
The page says this under the cards, in these words:
Responses come from people who clicked an ad and messaged you. Spend and delivery come from your connected ad account, so an ad can appear here with spend and no conversations. A dash means we have no synced figure for that ad, not a zero.
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.
2
Read the cards
Ads with replies, Conversations, New contacts and Revenue, plus Ad spend once your ad account has synced a figure for your dates. Revenue and Ad spend are there only if your role can view finance; without it you get the other three.
3
Read the table
One row per ad, busiest first. If your role can view finance, the last two columns are Ad spend and Cost per conversation. They show a dash until your ad account has synced a figure for that ad.
4
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.
5
Export
CSV gives you the table as a spreadsheet, PDF the same report as a document. See Export.
The responses on this report come from ads that open a WhatsApp chat, which is what the browser tab calls them: Click-to-WhatsApp ads. Messages from an ad that opens a Messenger or Instagram chat are not counted here. The ad’s details reach DMLY on WhatsApp’s own webhook, and there is no equivalent report for the other two.Spend is different. It is read from the whole ad account you connected, so any ad in that account that spent money in your dates gets a row, even one that never sent anybody to WhatsApp. It shows its spend and no conversations.
How many people tapped the ad and actually messaged you
What each ad cost in your dates
How many people saw the ad, and how many tapped without messaging
How many of those people were new to your business
What each conversation cost: the ad’s spend divided by its conversations
Cost per click, reach and frequency
How much money those people have since paid you
Impressions and clicks per ad, in the CSV only
Your return on ad spend
DMLY puts revenue and spend side by side, but it never divides one by the other, on the page or in the exports. To work out whether an ad paid for itself, set its Revenue against its Ad spend yourself, and remember the two can be in different currencies (see Caveats).Spend is synced from Meta every hour. Meta can restate an ad’s figures for up to 28 days, so the last few weeks can still move a little after you first read them.
An ad missing from the list is not an ad with a zero. Without a connected ad account, 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. With an ad account connected, an ad that spent money in your dates appears too, even with no messages. Either way, an ad that neither spent nor got a message in your dates has no row.
The number of rows in the table. Without an ad account connected, that is how many different ads got at least one message in the window. With one connected it also counts ads that spent money and got no replies, so despite its name it can be higher than the number of ads anybody answered.
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.
Ad spend
Every row’s Ad spend added together, in your ad account’s currency. Ads with a dash are left out of the sum rather than counted as zero. Shown only if your role can view finance, and only once there is a synced figure for your dates.
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.
Money collected from that ad’s contacts inside the window. Shown only if your role can view finance. See Revenue.
Ad spend
What Meta charged for that ad inside the window, in your ad account’s currency. A dash means there is no synced figure: no ad account is connected, the ad belongs to a different ad account, the row is a post rather than an ad, or the first sync has not run yet. A dash is never a zero. Shown only if your role can view finance.
Cost per conversation
Ad spend divided by Conversations. A dash when there is no spend figure, or when the ad had no conversations. Shown only if your role can view finance.
Rows are ordered busiest first: most conversations, then most messages, then most spend. So among ads that got no messages, the one that cost you most comes first.
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.
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.
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.
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.
Revenue against an ad is money you collected inside your date range, from the contacts that ad acquired.It values a payment almost the same way the finance report does for
Money in:
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. One difference: Money in never takes off more than the payment’s tip-free amount, but this report takes off the full refund. So when a refund includes a tip, the ad’s revenue comes out lower than Money in, and can go below zero.
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 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.
Revenue beside an ad is what those customers paid you. It has nothing subtracted for what the ad cost, even when Ad spend sits in the next column. It is not profit, and it is not return on ad spend.
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 by default the built-in Member and Viewer roles too; only a custom role without View finance (invoices, payments, orders) loses it): the full report, with the Revenue and Ad spend cards, the Revenue, Ad spend and Cost per conversation columns, and the money in both exports.
Cannot view finance: the same report with the money taken out, both what you earned and what you spent. Three cards, no money columns, and no revenue or spend in the CSV, the PDF or the ads page of the workspace report. An ad that spent money but got no messages still has a row, reading zero conversations, because the spend that put it there is withheld. Everything else works normally: conversations, messages, new contacts, the dates and the exports 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.Exporting is a separate permission again: CSV, PDF and Workspace report all need Export reports, which is admin only by default. The buttons are shown to everyone, so a teammate can select one and still be turned away. That is true of every Reports tab.
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
Ad spend and Cost per conversation, by the day Meta spent it
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.
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, New contacts, Impressions and Clicks. When your role can view finance it adds Revenue, Currency, Spend, Spend currency and Cost per conversation.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. Impressions and Clicks are in the file only; the page does not show them. Currency is your workspace’s, for Revenue; Spend currency is your ad account’s, for Spend. Where there is no synced figure, Impressions, Clicks, Spend and Cost per conversation are empty cells rather than 0, so a spreadsheet total never counts a figure nobody measured.
2
PDF
click-to-whatsapp-ads.pdf: the report as a document, laid out like every other Reports PDF, with your business header at the top and the date range under the title.Inside it: the same cards (Ads with replies, Conversations, New contacts, and Revenue when your role can view finance, plus Ad spend when there is also a synced figure), a Busiest ads bar chart of the top eight by conversations, and an Every ad table listing all of them. The chart only appears when the table has more than one row, and when there are more than eight a line under it names the total, so you know the table is the longer list.The Every ad table has no spend or cost per conversation columns. In the PDF, spend appears only as the Ad spend total. Use the CSV when you need spend ad by ad.The document repeats the caveats rather than leaving them on screen: where responses come from, and a message-limit warning on a busy range. When your role can view finance it also says where spend comes from, and adds the currency note and a stalled-sync line when they apply. With nothing in the range it prints No ad-referred conversations in this range.
3
Workspace report
The combined PDF carries an Ads section, on its own page after the others. It appears only when the ads table for that document’s trailing 30 days has at least one row: an ad that got a message, or, with an ad account connected, an ad that spent money. With neither in those 30 days, the report comes with no ads page at all rather than an empty one.That condition is about content, not permission. The finance section turns on whether your role can view finance; the ads section turns on whether there is anything to report. When the ads section does appear, everyone gets it, with the Revenue column and the Ad spend total left out for a role that cannot view finance.
Your From and To carry into the CSV and the PDF, so both files match the window you were looking at. The Workspace report carries nothing across and always covers the trailing 30 days, and its ads page renders only if there is something in those 30 days; this tab’s own PDF renders whether or not there is. See Exporting reports.
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.
On the contact
The contact’s Source names the ad that brought them in: WhatsApp ad: Summer Sale. See Contacts.
In an automation
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.
Nobody has tapped it and messaged you inside your dates, and DMLY has no spend for it in those dates either. Without a connected ad account, DMLY learns about an ad only from the message it produces, so an ad with no messages is invisible here rather than a row of zeros. Connect your ad account and an ad that spent money shows up even with no messages. Otherwise widen the dates, then check the ad in Ads Manager to see whether it is getting clicks at all.
The spend column is all dashes
Look at the line under the cards. It tells you which of these it is:
No line at all: usually no ad account is connected, so there is nothing to sync. See Connect your Meta ad account. If one is connected, it has synced and simply has no spend for these ads in your dates.
An ad account is connected. Spend and delivery appear after the first hourly sync. Wait for the hour to turn.
Several ad accounts were shared and none is chosen yet. Pick one under Integrations, Meta Ads, before spend can be reported. DMLY never guesses which account is yours. Open Integrations → Meta Ads and choose one.
Meta Ads is not included in your plan. Upgrade to connect an ad account. An ad account is still connected, but your plan no longer includes Meta Ads, so syncing has stopped and any figures are from before it did. See Plans.
A red line starting Spend stopped syncing or Spend is not syncing: Meta stopped accepting the connection. Open Integrations → Meta Ads, disconnect and connect again. Until you do, the figures are from the last sync that worked.
With everything working, a dash on one row still means that ad has no figure: it is a post rather than an ad, or it belongs to a different ad account from the one you connected.
Spend is there but I cannot compare it with revenue
Revenue is in your workspace’s currency and spend is in your ad account’s. When the two differ, the page says: Your ad account bills in a different currency from this workspace, so return on ad spend is not shown. DMLY does not convert between them, so do that sum yourself with the rate you use for your books.
Where do I see what my paid Messenger broadcasts cost?
On the broadcast itself, not here. A paid Marketing Messages broadcast gets its own Paid campaign panel with Meta’s figures for that send, including its spend if your role can view finance. See What it costs.
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.
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.
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. Ad spend on this page is Meta’s own figure, synced from your ad account, so for cost the two should broadly agree, allowing for the hourly sync and Meta restating recent days.
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.
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.