WhatsApp API & Developers

WhatsApp Free Entry Point: How CTWA Ads Make Messages Free

You already pay Meta for the ad click. Then the shopper starts a chat, and it can look as if you'll pay again for every message that follows: the welcome reply, the catalog, the order confirmation, the reminder two days later. On the WhatsApp Business Platform, most of that is free, because a Click-to-WhatsApp ad can open a WhatsApp free entry point window.

The free entry point is one of the few genuine discounts in Meta's per-message pricing. It's also easy to waste: reply too slowly and it never opens, use the wrong device path and it doesn't apply, or assume it covers every kind of message and get billed anyway.

This guide explains how the window opens, what it covers, how to confirm it in your data and how to plan the days it gives you, as of October 2026.

How the window opens

The free entry point (FEP) window opens from your reply, not from the user's click. Per Meta's pricing page:

  1. A user taps a Click-to-WhatsApp (CTWA) ad and messages you from WhatsApp on Android or iOS. Desktop and web apps aren't supported.
  2. Their message opens a normal 24-hour customer service window.
  3. You respond inside that window with a marketing, utility, authentication or service message.
  4. That response is not charged, and it opens the FEP window, starting from the time you responded.
  5. The FEP window may remain open for up to 7 days.

Two consequences follow. If you don't reply within the first 24 hours, there is no free window at all, so an ad lead left overnight in a shared phone costs you the discount. And because the clock starts at your reply, the earlier you answer, the earlier the window starts and ends. Speed doesn't buy more days; it buys the lead while they still care.

Older Meta documentation described this window as 72 hours. The current page says it may last up to 7 days, and "may" is doing work there, so check each message's pricing data rather than assuming a full week. Earlier docs also mentioned Facebook Page call-to-action buttons as an entry point; Meta's current pricing page describes the window for Click-to-WhatsApp ads only, so confirm on that page before building a funnel around a Page button.

What's free and what isn't

MessageInside an open FEP window
Marketing templatesFree
Utility templates (order confirmations, delivery updates)Free
Authentication templatesFree
Service messages (free-form replies from people or your own AI)Free
Meta Business Agent messagesCharged at Meta's per-token rate
Messages from the user to youAlways free
Anything after the window closesNormal per-message rates

Three more details from Meta's page:

  • The window belongs to the business and user pair. If several Messaging accounts send on the same business phone number, they all share the window. The account that paid for the ad doesn't get exclusive use.
  • Free messages don't count toward volume tiers. Utility and authentication messages sent in the window are excluded from your tier progress, since only charged messages count. See WhatsApp API volume tiers.
  • The normal rules still apply. Free-form replies still need an open 24-hour service window. After it closes, you need an approved template even though the template itself is free. Our guide to the WhatsApp 24-hour window covers the difference.

How to measure it

You need two things in your data: which conversations came from ads, and which messages Meta didn't charge for.

Ad attribution arrives on the first inbound message. When a user writes from a CTWA ad, the incoming messages webhook includes a referral object:

"referral": {
  "source_url": "https://fb.me/3cr4Wqqkv",
  "source_id": "120226305854810726",
  "source_type": "ad",
  "headline": "Chat with us",
  "body": "Summer succulents are here!",
  "media_type": "image",
  "ctwa_clid": "Aff-n8ZTODiE79d22KtAw...",
  "welcome_message": { "text": "Hi there! Let us know how we can help!" }
}

source_id is the ad ID and ctwa_clid is the click ID Meta assigned to that ad click. Meta omits ctwa_clid for ads shown in WhatsApp Status placements, so don't make it a required field.

Free messages are labelled in status webhooks. The pricing object on a status update carries a type. Messages sent in an open FEP window show free_entry_point; billable messages show regular. Store both, per message:

def on_inbound(msg: dict, db) -> None:
    ref = msg.get("referral")
    if ref and ref.get("source_type") == "ad":
        db.tag_conversation(
            contact=msg.get("from_user_id") or msg.get("from"),
            ad_id=ref["source_id"],
            click_id=ref.get("ctwa_clid"),     # missing for Status placements
        )

def on_status(status: dict, db) -> None:
    pricing = status.get("pricing") or {}
    db.record_delivery(
        message_id=status["id"],
        category=pricing.get("category"),
        pricing_type=pricing.get("type"),     # "free_entry_point", "regular", ...
        billable=pricing.get("billable"),
    )

With that, a weekly report can show, per ad: conversations started, messages sent free, messages billed after the window, and the cost avoided (free messages multiplied by the rate you would have paid for that category in that country). That last number belongs next to the ad spend when you judge an ad. Note that from_user_id holds the user's BSUID, which matters as usernames roll out and phone numbers stop arriving for some users.

Planning the days the window gives you

A free window is an opportunity to be useful, not a licence to send more. Blocks and reports during it still hurt your quality rating. A sequence that works for most ad-driven sales:

  1. Answer within minutes. Ad leads go cold quickly, and nothing is free until you reply.
  2. Qualify in the first reply. Use the ad's context: if they tapped an ad for a sofa, ask about size and delivery area, not "how can I help?"
  3. Send the useful thing next. Prices, a catalog link, a booking slot or an order summary, while the service window is open and you can write free-form.
  4. Confirm with utility templates. Order confirmations, payment links and delivery updates sent in the window cost nothing.
  5. One follow-up, not five. A single reminder a couple of days later, as a template if the service window has closed, is plenty.
  6. Hand hot leads to a person. An agent who sees the ad, the questions and the history converts better than a fourth automated nudge.

If your ads feed WhatsApp from lead forms rather than chats, the flow is different; see Meta Lead Ads to WhatsApp.

How it fits your overall WhatsApp costs

The free entry point changes where your spend goes. Outbound marketing templates are charged per delivered message, at a rate set by the recipient's country, and marketing has no volume discount. Inside a FEP window, the same templates cost nothing. That makes Click-to-WhatsApp ads a way of moving money from per-message fees into media, which only pays off if the ad itself brings the right people.

Run the comparison honestly: the cost of the click, plus anything you send after the window closes, against the per-message cost of reaching a similar audience with marketing templates. Our guides to WhatsApp marketing message cost and ways to reduce WhatsApp API costs go deeper, and the complete guide to the WhatsApp API puts pricing in context.

Where Tenashi fits

The free entry point exists because the Business Platform bills per message. Tenashi doesn't: it has no per-message fees at all, because it isn't Meta's API. Connect your existing WhatsApp or WhatsApp Business number by scanning a QR code, and your team handles every chat, including ad leads, from one shared inbox with a CRM, deals pipeline and follow-up reminders under each conversation.

For an ad-driven sales team, that means leads get assigned to a person instead of waiting on one phone, and the follow-up on day three actually happens. The trade-off is real: no templates, buttons, Flows or green tick, and WhatsApp can still ban numbers that spam, so ban protection reduces risk rather than removing it. Plans start from $18/mo.

See every feature · Get started

FAQ

How long is the WhatsApp free entry point window?

Meta's current pricing page says the window may remain open for up to 7 days, starting from the time you respond to a user who messaged you from a Click-to-WhatsApp ad. Older documentation said 72 hours. Because Meta says "may", confirm each message's pricing type in status webhooks rather than assuming a full week.

Which messages are free in the free entry point window?

Marketing, utility, authentication and service messages you send to that user are free while the window is open. Meta Business Agent messages are still charged at Meta's per-token rate. Normal rules still apply: free-form replies need an open 24-hour service window, and outside it you must use approved templates, which remain free.

Do Facebook Page buttons open a free entry point window?

Meta's current pricing page describes the free entry point for users who message you from Click-to-WhatsApp ads on Android or iOS, and doesn't list Facebook Page call-to-action buttons. Older documentation did mention Page buttons. Check Meta's pricing page before building a funnel that depends on a Page button being free.

How do I know a message was sent free?

Read the pricing object in the status webhook for each message. Messages sent in an open free entry point window have a pricing type of free_entry_point, while charged messages show regular. Pair that with the referral object on the user's first message, which carries the ad ID and click ID.

Does the free entry point work if someone clicks on a computer?

No. Meta's pricing page says the free entry point applies when the user messages you from a Click-to-WhatsApp ad using WhatsApp on Android or iOS, and that desktop and web apps aren't supported. Leads arriving from desktop still open a normal service window, but your messages are priced normally.


Answer fast, be useful for a week, and the free entry point pays for a good part of your ad-driven conversations. If you'd rather not count messages at all, see how Tenashi's shared inbox works on the number you already have.