Suppose your DM campaign has hundreds of replies and link clicks, but the checkout has recorded six orders. A dashboard that groups all those actions under “conversions” will make the campaign look much more successful than the sales report does.

To measure the return, connect the conversation to a confirmed business outcome and count the cost of getting there. Keep two questions separate: how much business passed through the DM journey, and how much extra business the automation caused. You can usually answer the first before you can answer the second.

Decide what counts before you build the flow

Choose one outcome for the campaign. For a paid workshop, it might be a paid registration. For a bike shop, a completed service appointment. For an agent, a qualified inquiry that becomes an attended viewing. The closer the outcome is to money collected, the less estimating your report needs.

A button click is useful evidence that someone wanted the next step. It cannot confirm that the next step worked. Write down which system can confirm each stage, and use that definition every time you report.

An example measurement plan for a paid workshop
StageWhat countsWhere to check
Conversation startedA person takes the qualifying interaction that starts the flowAutomation platform
Registration link clickedThe person clicks the workshop linkLink or automation reporting
Paid registrationA successful payment tied to a registrationTicketing or checkout system
AttendanceThe attendee checks in or meets your attendance definitionEvent platform or check-in record
RefundA previously paid registration is refundedPayment system

Keep these as separate events. Counting a registration-page visit as a sale creates a problem no attribution model can fix. Our Instagram event registration guide follows that handoff in more detail.

Carry the campaign context through the handoff

Give each campaign a stable name and each creative a recognizable identifier. Record them when the conversation starts, then preserve them when someone moves to your website or booking tool. A spreadsheet is enough to define the names; the connection between systems is the part you must test.

Google’s campaign URL guidance explains how UTM parameters identify referral campaigns in Analytics. For an organic Instagram DM campaign, a link might use utm_source=instagram, utm_medium=organic_social, utm_campaign=october_workshop, and utm_content=ceramics_reel. Use your actual source and medium, and keep spelling consistent.

UTMs describe the tagged visit. Connecting that visit to a later booking still requires your booking system to retain the campaign information or another supported way to join the records. Test the whole route, especially when checkout runs on a different domain. Do not put someone’s name, email address, or answers into campaign parameters.

There are also vendor-specific options. ManyChat’s current Pixel documentation describes website conversion and money events, a contact-identifying parameter added to an Open website button, and an initial visit from the messaging channel. It says the resulting session lasts 28 days and that Pixel requires a paid plan. That is a particular tracking mechanism with prerequisites, rather than a promise that every purchase will appear automatically.

The money event records the value your implementation sends. Your checkout should establish whether a purchase happened and what it was worth. Before trusting a revenue chart, confirm that failed payments, repeated page loads, and refunds produce the records you expect.

This is where real implementations get untidy. In a ManyChat community discussion about Kajabi, a user could record events inside the automation but could not get website events back into ManyChat. The public reply offered troubleshooting, not a confirmed fix. It is one reported experience, but a useful reason to require a completed test transaction rather than treating an installed script as proof.

Use the funnel to locate the expensive problem

Count people or orders consistently. If one person taps the same link three times, three clicks should not become three leads. If a payment service retries its notification, use the transaction identifier to avoid counting the order twice.

Review a cohort: people who started the campaign during a defined period, followed for an agreed length of time. Otherwise you might divide this week’s purchases by this week’s conversations even though some buyers started last month. A campaign with a long buying cycle needs time to mature.

Report definitions vary between tools. For example, respond.io’s Lifecycle documentation ties its reporting period to the first lifecycle-stage assignment and excludes contacts who never entered the lifecycle. Before comparing its conversion rate with a website report, check whether both include the same people and use the same starting point.

The useful question is what to change next. If people start the conversation but rarely open the registration page, examine the offer and message. If they reach checkout but do not pay, test the price, mobile checkout, and payment failures. If they pay but do not attend, look at expectations and event delivery. More messages are unlikely to solve every one of those problems.

Calculate return using the money you keep

Revenue is a starting point. A $100 order may leave much less once you account for the product, fulfillment, payment fees, and refunds. For this calculation, use contribution: the money left after the variable costs of delivering the sale.

Next, total the campaign’s costs for the same period. Include the automation subscription allocated to the campaign, setup and maintenance work, creative production, paid distribution, and staff time spent handling the resulting inquiries. State how you allocate a setup fee across campaigns or months. Do not quietly omit it because it was paid earlier.

Estimated incremental ROI = (additional contribution + realized cost savings − campaign cost) ÷ campaign cost × 100.

Here is an illustrative calculation, not a ChatFunnels client result. Suppose 60 orders are linked to the DM campaign. Each contributes $40 after variable costs, and the campaign costs $1,000. That gives $2,400 of attributed contribution and a 140% return calculated from attributed contribution. It does not establish a 140% incremental return.

If a credible comparison suggests that only 25 of those orders were additional, the incremental contribution is $1,000. With the same campaign cost and no realized labor savings, estimated incremental ROI is 0%. The automation may still be worth improving, but the decision looks different once you account for people who would have bought anyway.

Show labor separately unless it changes an actual cost. Ten hours freed up can be valuable capacity for a busy team. It is not automatically ten hours removed from payroll. If you value that capacity in a broader business case, label the hourly assumption and avoid counting the same benefit again as extra sales contribution.

Be honest about what attribution can prove

Attribution assigns credit under a set of rules. Incrementality estimates the change caused by the campaign. Google’s explanation of Conversion Lift makes the distinction explicit: its lift studies compare treatment and control groups, while standard attributed conversions follow configured tracking rules. This is a measurement principle, not an instruction to use a Google Ads feature to test Instagram DMs.

For the automation itself, a useful experiment might compare eligible inquiries receiving your current manual response with those receiving the new automated flow. Both groups should still receive appropriate service. Where the setup supports it, randomly assign eligible inquiries to the groups, keep the offer and traffic comparable, and decide the outcome and observation period before looking at results. If assignment is not random, record how the groups were chosen and the differences that could affect the comparison.

Match the cost comparison to the decision. To evaluate the whole campaign, include its full costs. To evaluate replacing an existing manual response with automation, compare the additional contribution and cost change against that manual service. Charging the automated group for the entire campaign while ignoring the manual group’s costs would answer the wrong question.

Small businesses may not have enough volume to distinguish a real improvement from chance. In that case, show counts, costs, and uncertainty. A before-and-after comparison can inform a decision, but changes in season, pricing, advertising, or staffing are alternative explanations. Calling the result directional is more useful than presenting a precise percentage you cannot defend.

Include the conversations behind the numbers

A flow can reduce staff replies by making it difficult to reach a person. That would improve one metric while making the service worse. Review a sample of completed conversations, abandoned conversations, and human handoffs alongside the financial report.

Intercom’s guidance on evaluating AI agents recommends testing messy inputs, uncertainty, and handoffs, and evaluating how the interaction feels as well as whether it completes. Although its article concerns support agents, the same questions are useful when reviewing a DM sales journey.

Look for someone repeating an answer, receiving an irrelevant offer, or asking for a person without getting one. Then identify the message or routing rule responsible. Count a human handoff as a useful outcome when the customer’s problem needs a human.

Bring one short report to your next campaign review: confirmed outcomes, contribution, full costs, the basis for attribution, and the conversation problem you will fix next. If the connection between the DM and checkout is still missing, make that the next piece of work. The DM campaign field guide includes event maps and launch checks to help you test that connection.

First published . Updated with current research and practical examples.