Sign in

Blog · Board and management reporting

Omnichannel analytics: reconcile sales across channels

Reconcile store and online order exports before comparing channel performance. Follow the spreadsheet steps for net sales, returns, and repeat buyers, with a worked example and checks against double counting.

The short answerOmnichannel analytics compares sales and buying patterns across channels using consistent order and customer identifiers. Start by assigning each completed order to one originating channel, linking refunds to that order, and calculating net sales. Then count distinct shoppers and repeat purchases across the combined file, checking that channel sales add to the company total without counting shared customers twice.

Omnichannel analytics starts with a sales total that counts every order once across stores and online. Use consistent order identifiers, put returns against the originating sale, and compare repeat buying only where the supplied customer identifiers already match across channels.

The purpose is a commercial reconciliation: where net sales happened and how identified customers bought. Campaign attribution and contact-center journeys answer different questions.

Set the channel and period before combining files

Choose an originating sales channel for each order. The Census Bureau's retail definitions classify ecommerce by how the order is placed or its terms negotiated; payment need not happen online. That supports separating order channel from payment method and pickup location.

Choose the reporting period and a consistent treatment of canceled orders, sales tax, shipping, discounts, and refunds. For the example below, merchandise sales exclude sales tax and shipping. Refunds are posted within the same period as the orders they reverse. For a real monthly close, a refund from an older order still needs its original channel, even when its posting date belongs to the current month.

Finance should own the definition of net sales. Store and ecommerce managers should approve channel assignments. The customer-data owner should confirm which existing tokens are comparable. Do this before ranking channels.

Build one row per completed order

Start with the order exports and the return register. Keep order ID, order date, originating channel, an approved deidentified customer token, gross merchandise sales, discounts, and linked refunds. Include the source file and source row in your working records so exceptions can be traced.

Roll item lines into orders before counting orders. Retain distinct return IDs while summing refunds against the original order; repeated refund exports must not create repeated deductions. A pickup confirmation or delivery event is not another order.

A fictional US home-goods retailer has these October 2026 orders. Columns A through H follow the table, with headings in row 1 and orders in rows 2 through 7. Discounts and refunds are positive deductions.

Order Order date Channel Customer token Gross sales (USD) Discounts (USD) Refunds (USD) Net sales (USD)
O101 October 1, 2026 Store C01 100 0 0 100
O102 October 2, 2026 Online C02 80 0 0 80
O103 October 3, 2026 Store C03 120 0 20 100
O104 October 12, 2026 Online C01 50 0 0 50
O105 October 14, 2026 Store C02 90 0 0 90
O106 October 18, 2026 Online C04 60 0 0 60

Check order uniqueness in a spare column, filling down from row 2:

=COUNTIF($A$2:$A$7,A2)

Every result must be 1 after the item lines have been rolled into orders. Investigate repeated keys before calculating either sales or repeat buying.

Calculate net sales and prove the channel totals

Net sales = Gross merchandise sales − Discounts − Refunds

In Excel, enter this in H2 and fill down:

=E2-F2-G2

For store and online net sales respectively, use:

=SUMIFS($H$2:$H$7,$C$2:$C$7,"Store")
=SUMIFS($H$2:$H$7,$C$2:$C$7,"Online")

Microsoft's SUMIFS documentation describes the matching-criteria sum and requires equally sized sum and criteria ranges.

Channel Gross sales (USD) Discounts (USD) Refunds (USD) Net sales (USD)
Store 310 0 20 290
Online 190 0 0 190
Total 500 0 20 480

The check is 290 + 190 = 480, also equal to 500 − 0 − 20. The $20 refund on O103 belongs to Store even if another channel processed it. Keep that handling location available for a separate service-cost review. See credit notes and returns in revenue measures for the broader revenue treatment.

Tie the gross-sales and refund totals separately to their source reports. A correct net total can conceal an omitted sale and an omitted refund of the same amount.

Count repeat shoppers across the combined orders

List each distinct nonblank customer token once in J2:J5. Count its orders in K2, then flag repeat shoppers in L2, filling both formulas down:

=COUNTIF($D$2:$D$7,J2)
=IF(K2>=2,1,0)

Microsoft documents COUNTIF as counting cells that match a criterion. Here the criterion is the token, and the underlying file already has one row per qualifying order.

Customer token Orders Repeat flag
C01 2 1
C02 2 1
C03 1 0
C04 1 0
Total 6 2

The repeat purchase rate is:

=SUM(L2:L5)/COUNTA(J2:J5)

That is 2 / 4 = 50.0%, rounded to one decimal place. It describes repeat buying within this window, not lifetime loyalty. Define whether fully refunded orders qualify; this example has no fully refunded orders.

Store has three identified shoppers and Online has three, but the business has four. C01 and C02 appear in both channels, so adding channel customer counts would double count them. For basket spending, use the separate average order value measure; shopper analytics covers basket composition.

Where it goes wrong

  • Different order identifiers. A receipt number can repeat across stores. Use the source's complete order key, including location where needed.
  • Refunds without original orders. Report unmatched refunds as exceptions rather than guessing a channel.
  • Blank customer tokens. Keep their sales in the reconciliation, but exclude them from identified-customer rates and disclose the coverage gap.
  • Unequal observation windows. A new channel has had less time to show repeats. Compare equivalent periods before explaining a difference.

Covirage is not affiliated with Microsoft.

Reconcile your own channel exports in Covirage

Bring a sample of your own order and refund files with the channel rules and existing identifiers. Covirage maps the columns, and its tools compute and check the channel totals and repeat-purchase measures; the external AI model explains the results with every figure traced to its rows. Create a free Covirage account and set up your business to start with your own files.

See revenue driver analysis for the supporting commercial review.

Questions people ask

How do you count an online order picked up in a store?

Keep the order in its originating sales channel and record pickup location separately. An online order collected in a store remains one order. The pickup record describes fulfillment and should not create another sale in the store total.

What if customer identifiers differ between channels?

Use an existing, approved cross-reference if the business has one. Otherwise report channel-level customer counts separately and state that combined repeat buying cannot be measured reliably. Similar names or email fragments are not proof that two records belong to one shopper.

Should returns reduce the original channel or the return location?

For a sales-channel comparison, reduce the original order's channel and retain the return location as a separate operational field. A return handled by a store can still reverse an online sale. Keep the posting period policy explicit.

Is repeat purchase rate the same as customer retention?

No. An in-period repeat purchase rate counts shoppers with multiple qualifying orders during the observation window. Retention follows a defined starting customer group into a later period. Both need consistent identifiers, but their populations and time windows differ.