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

# Customer matching — which records are the same customer?

> How Beacon works out which records across your tools are the same customer, what you see and do on its page, what it needs, which modules depend on it, and what it does not calculate yet.

**Customer matching** answers one question: *Which records across my tools are the same customer?* Your billing system, your CRM and your other tools each keep their own record of a customer. Customer matching joins those records into one customer with one ID, shows you what it joined and why, and waits for a person on your team to confirm each match. Every other module counts customers on that ID. It belongs to the Shared foundation — see [Modules](/modules/overview).

## What it does

As soon as two of your tools hold customer records, Beacon joins the records that clearly describe the same company — today, records with the same email domain or the same stored ID. Each customer then has one of two statuses:

* **Matched** — the customer is complete: found in every tool it belongs in, linked to its parent company if it has one, confirmed by a person, and checked recently.
* **To review** — something is still open, and the page says what: a match to confirm, a record to find in another tool, a parent company to link, or a re-check.

The aim is every customer Matched. A joined customer is used in your figures straight away, but it stays To review until someone confirms it. Beacon never merges two records on its own, and it never changes or merges anything in your tools — the matches are kept in Beacon.

## What it produces

Its headline is one figure:

| KPI | What it measures | Today |
| - | - | - |
| [**Revenue matched**](/definitions/revenue-matched-rate) | The share of your recurring revenue that comes from Matched customers. The aim is 100% | Not calculated yet |

It is shown on the module's page in Beacon as not yet calculated. Its name links to its definition, which also says how the [Data API](/api-reference) and [MCP](/mcp-tools) will carry it — neither serves it yet.

Behind it, the page shows today:

| What | What it tells you | Today |
| - | - | - |
| **Customers matched and to review** | How many customers are Matched, how many are To review, and the next reason to review | Shown |
| **The review queue** | Each customer to review, what Beacon joined, and the button that closes it | Shown |
| **Compare records** | One customer's records side by side, one column per tool, across the details used to match | Shown |
| **All customers** | Every customer, with one column per connected tool | Shown |
| **The match score for each customer** | A score from 0 to 100 for how complete each customer's match is | Not calculated yet |
| **Revenue by status** | How much of your recurring revenue sits with Matched customers and how much is still to review | Not calculated yet |
| **Parent companies** | Subsidiaries linked to their parent, with how their revenue is counted | Not shown yet |

## How a customer becomes Matched

The match score has four parts. A customer is Matched when all four are complete — its score is then 100. Each part is something a person can close:

| Part | Weight | How you close it |
| - | - | - |
| **Found in every tool** | 35% | Find the record in the other tool, or confirm the customer is not in that tool |
| **Parent company known** | 30% | Link the subsidiary to its parent, or mark it as separate |
| **Confirmed by a person** | 25% | Confirm the match |
| **Checked recently** | 10% | Re-check the customer |

The weights are fixed. Your billing system and your CRM count double in the first part.

When Beacon compares two records it looks at seven details: email domain, company name, billing address, contacts the two records share, tax or registration number, website and phone. **Compare records** shows each of them side by side. Today Beacon joins only exact matches; scoring looser, possible matches waits for the match score.

## What you see on its page

In Beacon, open **The Brain** and choose **Customer matching**. The page has six tabs:

* **Overview** — customers matched and to review, the next reason to review, where each customer stands, the steps to 100%, and the tools it reads.
* **Dashboard** — the module's main charts. The revenue charts read **Not yet calculated** today.
* **Signals & alerts** — what the module watches, and its alert rules.
* **Scorecard** — the four parts of the match score and their weights, the seven details and the rules. The scores read **Not yet calculated**.
* **Customers** — the review queue, **Match by hand**, **Compare records** and every customer across your tools. Confirm, keep two records apart, say a customer is not in a tool, or undo.
* **Setup** — the questions the module uses, and the answers in use.

Every confirmation, keep-apart and undo is recorded with the name of the person who made it. Confirming happens one customer at a time today; confirming every exact match in one go is not available yet. For a company with thousands of customers the page can take up to half a minute to open.

## What it needs

Matching starts as soon as **any two** connected tools hold customer records. No single tool is required.

| Tool | What it adds | Matched today |
| - | - | - |
| **Billing** (Stripe) | Customers, email domains, billing addresses and tax numbers | Yes |
| **CRM** (HubSpot) | Companies, domains, contacts and parent companies | Yes |
| **Product usage** | Organisations and their admins' email domains | Not yet |
| **Support** | Companies and their email domains | Not yet |
| **Accounting** | Registered addresses and tax numbers, used only to match | Not yet |
| **Company data service** | Legal names and parent companies | Not yet |

See [Connect your tools](/connect-your-tools) for how each connection is made.

## Reads from

Nothing. Customer matching runs first, before any other module, and reads your tools directly. Later it will also take new email domains and segments from [**Segments**](/modules/segments), to spot new customers and show matching by segment.

## Which modules read it

| Module | What it uses Customer matching for |
| - | - |
| **Every module** | One ID per customer, so a customer is counted once |
| [**Data model**](/modules/data-model) | Builds its model of each customer on that ID |
| [**Data integrity**](/modules/data-integrity) | Checks that billing customers are matched to your CRM; possible matches appear among its issues |
| **Signals** | Attaches every signal to the right customer |
| **Customer fit** | Holds back a customer's fit verdict while its match score is under 70 |
| **Revenue forecast** | Will count recurring revenue and retention for the right customer, and for a group under its parent. It is not built yet |
| **Segment revenue paths** | Shows how well matched the customers at each stage are |

Today the other modules use the join itself. The ones that use the match score — Customer fit, Data integrity and Segment revenue paths — wait for it, because it is not calculated yet. The **Modules** page in The Brain shows which modules are running for you.

## Alerts

| Alert | When it fires |
| - | - |
| **Likely the same customer** | Two records look like the same customer and need a person to confirm or reject them |
| **A subsidiary is not linked** | A customer seems to have a parent company that is not linked yet |
| **A customer needs re-checking** | A customer has not been checked for 180 days, or 365 |
| **A big customer is poorly matched** | One of your largest customers has scored under 70 for more than a week |
| **The data model started before matching was done** | Your data model is switched on while less than 80% of your largest customers' revenue is matched |

**No alert is sent yet.** The first rule is built to post to Slack and waits for the match score; the others wait for the parts they read.

## Setup questions

* **Which tool is right about each customer's details** — name, address, tax number?
* **How should a subsidiary's revenue be counted?** Recommended: all of it to the parent company, unless you say otherwise for a particular customer.
* **Which customers count as your biggest?** They are reviewed first, and their alerts come first.

Which tools you use and who looks after your data are asked once and used here too.

## What is not calculated yet

* **The match score** for each customer, its four parts, and the tiers that tell other modules whether to use a customer still to review.
* **Revenue matched** and **revenue by status**.
* **Parent companies** and how a group's revenue is counted.
* **Possible matches** — Beacon joins exact matches only.
* **Confirming every exact match at once.**
* **A daily matching run**, so new records are checked within a day.
* **Product usage** as a column, and the other tools in the table above.
* **Alerts** — none is sent yet.

## Related

<Columns cols={3}>
  <Card title="Modules" href="/modules/overview">
    The ten module families and which modules are available today.
  </Card>

  <Card title="Data model" href="/modules/data-model">
    The model of your company built on each customer's one ID.
  </Card>

  <Card title="Data integrity" href="/modules/data-integrity">
    The checks that run over every record, including billing matched to your CRM.
  </Card>

  <Card title="Connect your tools" href="/connect-your-tools">
    What each connection unlocks, and which modules switch on with it.
  </Card>

  <Card title="How current a number is" href="/how-current-a-number-is">
    When each figure was last worked out.
  </Card>

  <Card title="Boundaries" href="/boundaries">
    What Beacon reads, what it never changes, and what it does not decide.
  </Card>
</Columns>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.