North Marketing
ESEN
Book your diagnosis

Strategy and operations

All your customers, in one place

Unifying customers is a concrete technical problem: the same person shows up with a different name, email or phone number in each system. Solving it well is what lets you segment, measure and sell to them again.

North team · Updated October 7, 2026 · 5 min read

  1. Sourcesbookings, forms, social, WhatsApp
  2. NormalizationE.164 phone, lowercase email
  3. Unificationdeduplication by identifiers
  4. Consentopt-in by channel
  5. SegmentsRFM and behavior
  6. Activationemail, WhatsApp, ads
From four separate lists to one database you can use.

What a unified database makes possible

ProfileOne profile per personbookings + purchases + messagesEverything each customer did, whatever channel it came from.
SegmentsGroups that update themselvesRFM · last eventLoyal, at risk, dormant: each person moves between groups based on what they do.
AdsCustom audiencesSHA-256 → Meta and GoogleShow ads to your customers or to people similar to them.
AdsExclusionsbought in 30 days → outStop paying for acquisition ads shown to people who are already customers.
MessagesEvent triggersbirthday · anniversary · inactivityThe email or WhatsApp goes out on its own when something happens in the profile.
MeasurementRepurchase and LTV by channelsource → lifetime revenueWhich channel brings customers who come back and which brings one-time buyers.
ProductReading demandsearches and inquiries by topicWhat the base is asking for before it shows up in sales.
LegalConsent logchannel · date · source · textProof that each contact agreed to receive messages.

How it is done

Identity resolution: three records, one person

Each source stores data its own way. First the data is normalized: the phone number to the international E.164 format and the email in lowercase with no spaces. Then the records that share an exact identifier are merged.

Martina in three systemstable
Source      Name           Phone                  Email
Bookings    Martina Rios   998 123 4567           Martina@Ejemplo.com
Instagram   martu.rios     998-123-4567 (chat)    (no data)
WhatsApp    Martina        +52 1 998 123 4567     (no data)

Normalized                 +529981234567          martina@ejemplo.com
Rule        same phone or same email → same person
Result      cus_8f21 · 3 sources

Recommendation. Merge only on exact identifiers. A similar name can be used to suggest a manual review, never to merge automatically: two different people in one profile ruin segmentation. In Mexico you also have to remove the "1" that some systems still add after +52.

RFM segmentation in one query

The sales table is enough to calculate each customer's recency, frequency and monetary value and split them into fifths. It recalculates itself every night.

RFM score from 1 to 5SQL
SELECT cliente_id,
  NTILE(5) OVER (ORDER BY ultima_compra) AS r,
  NTILE(5) OVER (ORDER BY compras)       AS f,
  NTILE(5) OVER (ORDER BY gasto_total)   AS m
FROM (
  SELECT cliente_id,
         MAX(fecha) AS ultima_compra,
         COUNT(*)   AS compras,
         SUM(total) AS gasto_total
  FROM ventas
  WHERE fecha >= CURRENT_DATE - INTERVAL '24 months'
  GROUP BY cliente_id
) t;

Recommendation. A 5 in recency is the customer who bought most recently. A customer with low R and high F and M is "At risk": the first one to write to.

Ad audiences with encrypted data

Meta and Google accept customer lists encrypted with SHA-256. The data is normalized before encrypting, because a space or a capital letter changes the result and the person is not recognized.

Preparing a row for MetaJavaScript
import { createHash } from 'node:crypto'
const sha256 = (s) => createHash('sha256').update(s).digest('hex')

const email = ' Martina@Ejemplo.com '.trim().toLowerCase()  // martina@ejemplo.com
const phone = '+52 998 123 4567'.replace(/\D/g, '')         // 529981234567

const fila = { EMAIL: sha256(email), PHONE: sha256(phone) }

Recommendation. Upload only contacts who consented to that use. Meta asks for the phone number with the country code and without the + sign; Google asks for E.164 format with the +. The same data is prepared differently for each one.

Consent you can prove

Each consent is stored with the channel, the date, the source form or conversation and the text the person accepted. WhatsApp requires that consent before a business starts a conversation, and for email double opt-in is advisable: the person confirms from their inbox.

Recommendation. Keep consent separate for each channel. Someone who accepted email did not accept WhatsApp.

Where to keep the database

Before adding a new tool, we connect the ones you already have.

Your businessRecommended baseWhy
Hotel with a PMS and booking engineA CRM connected to the PMSThe PMS keeps each guest's history, but it does not segment or send
Restaurant with a reservation systemThe reservation system profiles, connected to the email platformIt already records each diner's visits and preferences
Online store on ShopifyKlaviyo as the profile baseIt receives purchases and browsing in real time
Business that sells through WhatsAppA CRM with a message inbox, such as GoHighLevel or HubSpotThe conversation and the profile live in the same place

What the dashboard looks like

Casa Aurora unified databaseIllustrative example
Source records112,4004 sources
Unique people89,100−21% duplicates
With permission81,600on at least one channel
Active segments6synced

RFM segments

SegmentPeopleRecencyAction
Champions4,200< 60 daysEarly access
Loyal11,800< 120 daysStamp program
At risk9,600120–270 daysCome-back offer
Dormant23,400> 270 daysEmail win-back

Tech stack

Integration
Webhooks and APIs from each tool, or connectors like Make, n8n or Zapier when there is no native integration.
Customer database
A CRM (for example HubSpot, GoHighLevel or Klaviyo profiles) as the single source of truth.
Identity resolution
Phone numbers normalized to the international E.164 format and emails in lowercase; matching by phone or email to merge records.
Consent
Record of permission by channel and date, according to each country's data protection law (in Mexico, the LFPDPPP).
Audiences
Segment sync with Meta (custom audiences) and Google using encrypted data.

Under the hood

One person, after unifyingJSON
{
  "id": "cus_8f21",
  "nombre": "Martina Ríos",
  "telefono": "+529981234567",
  "email": "martina@ejemplo.com",
  "fuentes": ["bookings", "instagram", "whatsapp"],
  "consentimiento": { "email": "2026-03-14", "whatsapp": "2026-05-02" },
  "rfm": { "recencia_dias": 38, "frecuencia": 4, "valor": 18400 },
  "segmento": "loyal"
}

The phone number is stored in the international E.164 format, and permission is recorded per channel and by date.

What we measure

Duplicate rate
Percentage of records that were the same person before unification.
Reachable contacts
People with valid permission on at least one channel.
RFM
Recency, frequency and monetary value: the base segmentation for knowing whom to talk to first.

Case analysis

Rip Curl: from the surfer as a spreadsheet row to a person with a story

Rip Curl · Australia, 2020

The surf brand, founded in 1969, had its data split by channel and by store. Its team described it as a "two-dimensional" view of the customer: they knew what they sold, but not to whom or how that person came back.

What they did, step by step

  1. It unified all its customer sources into a single data platform (Lexer).
  2. It built a single view of each customer with about 100 attributes.
  3. It added niche first-party data, such as the sessions logged by its surf watch.
  4. It created segments and automations. Customers who were drifting away got messages by email and on social media; if they still didn't respond, they were removed from the weekly sends.
  5. In April 2020 the data showed more interest in wetsuits and comfortable clothing, and it built campaigns for those audiences.
+28%open rate on emails with the customer's name
15xmore revenue than the benchmark in the wetsuit campaign
+117%year over year in email for the comfortable clothing line

The mechanism

  1. Sources by channelstores, web, surf watch
  2. CDPLexer
  3. Single profile~100 attributes
  4. Segmentsand reactivation
  5. Personalized email+28% opens

Why it worked. Each message reached the people who cared about it. And the same data showed which demand was growing before it showed up in sales.

Analysis of a public case. North Marketing did not take part in this work. The figures are the ones published by the vendor (Lexer).

Sources: Lexer

How we do it for your brand

  1. We list where your customers are today: bookings, forms, social media, WhatsApp, spreadsheets.
  2. We merge them into a single database, with no duplicates and with permission.
  3. We build the first useful groups: those who buy often, those who stopped coming, those who inquired and didn't buy.
  4. We launch a campaign to each group and measure who comes back.

Go deeper

Frequently asked questions

What about privacy?

We only use contacts who gave permission, and we follow the regulations of each country. Your data belongs to you.

Can I use my customer list for ads?

Yes, with the contacts who agreed to that use. The list is uploaded encrypted with SHA-256, and Meta or Google only use it to recognize those people on their platform.

Let’s start with a free diagnosis

30 minutes to see where your business is losing customers and what to do first. If you don’t see results in 30 days, we give your money back.

Book your diagnosis

We’ll message you on Instagram with times.

Keep reading