Skip to content

For businesses with a dormant customer base

Reactivate past customers on WhatsApp: who to message, which template, what it costs

Your past buyers are the cheapest audience to win back and the easiest to ruin: one broadcast to the whole spreadsheet, unfiltered, can pile up enough blocks and reports for Meta to limit the number. Here is how InvestCRM separates the people who may receive messages, sends in parts on the official API, keeps opting out one tap away, and shows the cost on Meta's rate card.

The problem

Why an old customer list is the riskiest audience

A list of past customers tends to mix people who bought yesterday with people who bought four years ago, numbers that changed hands, and people who never said they wanted updates on WhatsApp. Anyone who was not expecting the message blocks or reports it, and Meta uses that feedback to limit, restrict or even lock the account.

  • Buying is not the same as opting in: WhatsApp's policy requires permission for later messages. A purchase shows there is a relationship, not that the person agreed to get news through that channel.
  • Every person has a marketing ceiling: Meta can hold back a template for someone who keeps ignoring marketing, and error 131049 shows up in the report instead of a delivery.
  • Reach belongs to the portfolio, not the number: how many different people a business can start a conversation with in 24 hours is a limit on its Meta business portfolio, shared across its numbers; a new portfolio starts at 250.
  • Marketing is the priciest category: on the Brazilian rate card, each delivered marketing template costs R$ 0.3217, against R$ 0.035 for a utility notice.

No tool removes those risks. What you can do is send less and better: only to people who opted in, in parts, with an easy way out, reading the report before the next part goes out.

Setups in InvestCRM

Three setups to bring customers back

Names in bold are the labels on screen (in Portuguese). How broadcasts work inside (editor, pacing and report) is covered in Official API broadcasts.

From the Start plan

1. Only people who opted in: a tag on import, then a segment

Starts when

Before the first broadcast, when you import the customer spreadsheet.

How to set it up

  1. Keep in the spreadsheet only the people who agreed to get WhatsApp messages from your business, then import it under Contacts with a tag such as "Autorizou WhatsApp" (opted in). The tag goes on every imported contact, and numbers already on the block list are skipped. Spreadsheet columns var1 to var5 become the contact's fields 1 to 5.
  2. Do not treat the Inscrito (subscribed) condition as proof of consent: a new contact that comes in through an import is already marked as subscribed, dated the day of the import. What separates the people who opted in is the tag you chose.
  3. Under Segments, build the audience: O contato casa quando (a contact matches when) ALL conditions hold, for example Tag has "Autorizou WhatsApp" and Field 2 (renamed "Last purchase") contains "2025". The Prévia (preview) shows how many match. A segment with no condition includes nobody.
  4. In the broadcast, under Público alvo (audience), pick Segmento and, with + Excluir público (exclude audience), drop the tags of people who should not get it right now, such as an open exchange or a recent complaint.

What happens next

The broadcast only reaches people who passed the filters, and the system still asks for Confirmo o opt-in (I confirm opt-in) before publishing. InvestCRM does not work out on its own how long ago each customer bought: that information comes in through the spreadsheet, a field or the API.

InvestCRM screen: a broadcast's Público alvo with the + Condição menu open on Filtros Gerais (Tag, Segmento, Sequência de assinatura and Origem do opt-in), the count of who will receive it, and the Pronto para transmitir checklist with the Confirmo o opt-in box
Real InvestCRM screen, with sample data.

From the Business plan

2. In parts, reading the report before the next batch

Starts when

When scheduling, on the Envio Avançado (advanced sending) tab, from Business up.

How to set it up

  1. Set Contatos por lote (contacts per batch) and Um lote a cada (one batch every) 1, 2, 3 or 7 days. You get 2 to 30 batches, and each batch becomes its own broadcast in the list, with its own metrics.
  2. Start with small batches. If the screen shows the Mais de 100 disparos por dia (more than 100 sends a day) warning, take it seriously: it does not block the send, it only reminds you that a lead's report can stall the number even on the official API.
  3. Pick the Cadência de envio (sending pace): Devagar (6 a minute), Padrão (20), Rápido (60) or Personalizado, up to 600 a minute. Scheduling uses Brasília time.
  4. After the first batch, open the metrics: Entregues (delivered), Lidos (read), Respostas (replies), Falhas (failures) with the Por que falhou text, and Pulados (skipped, closed window or opt-out). If failures from Meta's limit climb or hardly anyone reads, delete the remaining batches and reschedule with another template or audience: each batch's audience is frozen when you schedule.

What happens next

Your base does not get everything on the same day, and a problem in the first batch surfaces while it can still be fixed. If Meta warns or restricts the number's account, that number's scheduled and running broadcasts are paused and only resume when you say so.

From the Start plan

3. Replies go to the pipeline; opting out takes one tap

Starts when

In the broadcast editor, on the quick-reply buttons of the entry template.

How to set it up

  1. In the reactivation template, use two quick-reply buttons, for example "Show me" and "No more, thanks".
  2. In the broadcast's flow builder, connect "Show me" to an Ações (actions) block with Adicionar Tag ("Reativado") and Adicionar ao funil (add to pipeline) on the first stage, followed by a short message saying someone will reply.
  3. Connect "No more, thanks" to the Descadastro (opt-out) block: the contact goes on the block list and the flow ends. Without that connection, tapping the button does not unsubscribe anyone; only the words SAIR, PARAR, STOP, CANCELAR or DESCADASTRAR, typed on their own, opt someone out by themselves.
  4. In the metrics, Cliques por botão (CTR) shows how many people tapped each button.

What happens next

Interest turns into a tagged deal in the pipeline, and opt-out requests are honored right away, as WhatsApp's policy asks. A tag named exactly "descadastro" also sends the contact to the block list from any screen; removing the tag later does not take them off it.

InvestCRM screen: sample flow where a message with three quick-reply buttons leads to an Ações block (Adicionar Tag Quer orçamento and Adicionar ao funil), a tag Condição and an Atraso Inteligente delay before the next message
Real InvestCRM screen, with sample data.

Message templates

Templates for existing customers, in the right category

Almost everything that invites a customer back is marketing. The exceptions are notices about something they already have, with no pitch attached. In a broadcast, each variable is mapped to a contact field under Variáveis do modelo → campo do contato (template variables to contact field). Replace the text in brackets with your business details before submitting for approval.

  • Something new for past buyers

    Marketing

    Template name: novidade_para_cliente

    Hi {{1}}! [New item] just arrived at [business] and we thought of you, since you have bought from us before. Want to see the details? To stop getting messages like this, reply STOP.

    • Show me
    • No more, thanks

    Why this category

    It presents a new product to drive a purchase: marketing, even for an existing customer. Both buttons feed the third setup; "No more, thanks" only opts someone out if it is connected to the Descadastro block.

  • Time to restock

    Marketing

    Template name: reposicao_produto

    Hi {{1}}, you bought [product] from us on {{2}}. If it is time to restock, reply here and our team will help. If you would rather not get reminders like this, reply STOP.

    • Restock now

    Why this category

    Reminding someone to buy again is recommending a product, which Meta lists as marketing. Variable {{2}} can come from the last-purchase field that arrived with the spreadsheet.

  • Warranty ending soon

    Utility

    Template name: garantia_vencendo

    Hi {{1}}, the warranty on your [product] ends on {{2}}. If you notice any problem before that date, reply to this message to open a support request.

    Why this category

    It tells the person about something they already own and care about, with no invitation to buy: it fits utility. If the text offers to extend the warranty, it becomes a renewal attempt, which Meta puts under marketing.

  • Rating an order

    Utility

    Template name: avaliacao_pedido

    Hi {{1}}, from 0 to 10, how likely are you to recommend your order {{2}}? Reply with the number; your rating stays with our team only.

    Why this category

    It asks about one specific order from that person, with nothing to sell attached, like the survey examples Meta accepts as utility. A generic survey with no link to a purchase of theirs is not approved as utility.

What it costs

A reactivation in batches, on Meta's rate card

Example of a business sending the new-item and restock invitations to the opted-in part of its base, in batches over the month, plus warranty notices and order ratings. Only delivered templates are billed, straight to your Meta account's payment method; InvestCRM does not charge per message.

Sample bill using Meta's official rate card, Brazilian number
What forCategoryMessages a monthBilledPrice per messageCost for the month
New-item and restock invitations, in batchesMarketing2,0002,000R$ 0.3217R$ 643.40
Warranty notices and order ratingsUtility400400R$ 0.0350R$ 14.00
Estimated monthly total, paid straight to MetaR$ 657.40

If the utility templates in this bill were classified as marketing, the same month would go from R$ 657.40 to R$ 772.08.

In a month like this, almost all the cost sits in the marketing invitations. Sending only to the people who passed the segment, rather than the whole spreadsheet, is what moves the bill most. For your own numbers, use the calculator.

The volumes are an example to show the math, not data from a customer.

Meta's BRL rate card for Brazilian numbers, effective Oct 1, 2026, checked on Oct 9, 2026. See the rate card at Meta

Run your own numbers in the calculator →

Rules

LGPD, opt-in and Meta's limits when messaging existing customers

What matters when the message goes to your customer base, with a link to the official text. InvestCRM organizes the audience and the sending; the legal basis and the content are the business's call.

  • Past customers: legitimate interest, with expectations and a way out

    Brazil's LGPD allows processing based on legitimate interest to support and promote the controller's activities, respecting the data subject's legitimate expectations (art. 7, IX, and art. 10). The data protection authority's (ANPD) guide lists, among the factors behind that expectation, a prior relationship with the person, the source and manner of collection, and the context and period in which the data was collected, and it gives an unsubscribe option inside the message itself as a safeguard. Legitimate interest does not cover sensitive personal data.

    In InvestCRM

    InvestCRM does not choose the legal basis for you. It gives you the means to honor your choice: tags and segments to narrow the audience, the typed SAIR, the Descadastro block and the block list.

    Source: ANPD guide: Legitimate Interest (in Portuguese)

  • WhatsApp requires opt-in, on top of the LGPD

    Even with a legal basis, the WhatsApp Business Messaging Policy only allows contacting people who gave you their number and gave permission to receive later messages, and it makes the business solely responsible for how it collects that permission. Among its best practices, it suggests that consent should cover the categories of messages you will send.

    In InvestCRM

    The Confirmo o opt-in box appears before publishing, but it is your statement, not a check. Because the Inscrito condition also marks imported contacts, the first setup relies on a tag of your own for the people who opted in.

    Source: WhatsApp Business Messaging Policy

  • Per-person marketing limit

    Every delivered marketing template counts toward a per-person limit that Meta adjusts on its own, based on that person's recent reading. Someone who hits the limit does not get the message, and the status update comes back with error 131049. Resending within 24 hours can block further attempts to that person for up to 24 hours; messages inside a window opened by their reply do not count.

    In InvestCRM

    In the broadcast report, those rejected deliveries land under Falhas, with Meta's reason under Por que falhou. Read it before building the next broadcast to the same base.

    Source: Per-user marketing template limits (Meta)

  • Negative feedback turns into restrictions

    WhatsApp's policy says people can block and report businesses, and that a lot of negative feedback can lead to sending limits, restriction or removal. On its enforcement page, Meta describes the ladder: a warning, a 1- or 3-day block on templates, a 5-, 7- or 30-day block on any message and, finally, an account lock.

    In InvestCRM

    Under Settings → WhatsApp, the Status do número field shows Ativo · aviso da Meta, Restrito or Bloqueado. When Meta warns or restricts the account, that number's scheduled and running broadcasts are paused and do not resume by themselves.

    Source: WhatsApp Business Platform policy enforcement (Meta)

  • Daily reach belongs to the portfolio

    Meta's messaging limit is the number of different people a business can reach outside the customer service window in a rolling 24 hours. It is set for the business portfolio and shared by all of its numbers; a new portfolio starts at 250, and the next tiers depend on high-quality messages.

    In InvestCRM

    The number's card, under Settings → WhatsApp, shows the Limites de mensagens value read from Meta. InvestCRM does not raise that limit; Envio Avançado helps you stay within it by spreading the base over several days.

    Source: Messaging limits (Meta)

  • Renewals and recommendations are marketing

    Under Meta's category rules, a utility template must not promote, recommend, upsell, include offers or try to secure renewals. A survey tied to an order can be utility; a generic one cannot.

    In InvestCRM

    InvestCRM does not change the category you chose; Meta decides. When Meta changes it, the Meus Modelos table shows the notice "a Meta mudou de Utility" next to the new category.

    Source: Meta template categories

Rules checked against the official sources on Oct 18, 2026. This is not legal advice: when in doubt, ask your professional council.

Plan

Which plan reactivation calls for

To reactivate a real customer base, the plan is Business. Start includes 1,000 broadcast messages a month and rejects, in full, any broadcast larger than what is left; Business has no such monthly cap and includes Envio Avançado, which splits the base into daily batches.

The size of the base matters too: Start includes 1,000 contacts and Business 5,000. Business also fits you plus 3 people to answer the customers who come back, with 10 active automations and 5 pipelines.

If the customers who opted in fit within 1,000 contacts and you send one broadcast a month, Start does the job without batches.

InvestCRM plans: price, limits and features of each one
FeatureGrátisStartBusinessEnterprise
Price per monthR$ 0R$ 147R$ 297R$ 597
Yearly (35% off)R$ 0R$ 1,146.60 a year (same as R$ 95.55 a month)R$ 2,316.60 a year (same as R$ 193.05 a month)R$ 4,656.60 a year (same as R$ 388.05 a month)
Contacts included1001,0005,000Unlimited
Broadcast messages per monthNot included1,000UnlimitedUnlimited
Batch sending (Envio Avançado)Not includedNot includedIncludedIncluded
Broadcast sending paceNot includedUp to 600 a minuteUp to 600 a minuteUp to 600 a minute
Schedule a broadcast by date and timeNot includedIncludedIncludedIncluded
People on the accountJust youYou plus 1You plus 3You plus 15

See all plans and pricing →

Questions

Questions before you message your base

Can I send to every contact I already have?

On screen, yes: with no condition, the broadcast goes to everyone except the block list. Under WhatsApp's policy, you should not: only to people who agreed to receive later messages. Build the audience from the opted-in tag and tick Confirmo o opt-in knowing what you are confirming.

How do I know how long each customer has gone without buying?

InvestCRM does not calculate that by itself. Bring the last purchase date in a spreadsheet column, which becomes a contact field, or update the field through the API on Business. Segments compare text ("contém" for contains, "é igual a" for equals), so use a format that is easy to filter, such as the year or the month.

A customer tapped "No more, thanks". Are they off the list?

Only if the button is connected to the Descadastro block in the broadcast flow. Without that, the tap arrives as an ordinary reply. The words SAIR, PARAR, STOP, CANCELAR and DESCADASTRAR, typed on their own, always opt someone out.

How often can I repeat a reactivation?

Meta gives no number: it adjusts each person's marketing limit based on what they read. Before repeating, compare Lidos and Respostas from the last send; if they dropped, change the template or the audience before trying again.

Is a birthday or holiday message utility?

Not when it carries an invitation or a coupon: then it is a promotion, and promotions are marketing. Utility is a notice about something the person has with the business, such as a warranty, an order or a payment, with no pitch attached.

Keep reading

To set up a reactivation

Start free on InvestCRM

The Free plan has no time limit and needs no card. Connect your number through the Meta window and try the system.